在Prolog中断言期间调用过程

时间:2013-11-09 11:22:00

标签: prolog prolog-assert

我有一个类似的断言查询:

:- dynamic a/1,b/1.

dump:- listing(a),listing(b).

main:-retractall(a(X)),assert(a(1):-write('aa')),
      retractall(b(X)),assert(b(1):-write('bb')).

我希望用户输入a(1)b(1),分别显示aabb的程序(到目前为止一直很好),然后调用另一个程序,取决于用户输入的内容。

例如,如果他输入a(1),我希望运行一个名为pro_a的程序,如果他输入b(1),则会运行一个程序pro_b

这些程序将是:

  pro_a:- retractall(a(X)),retractall(b(X)),write('you chose a'),
          assert(a(1):-write('aa1')).

  pro_b:- retractall(a(X)),retractall(b(X)),write('you chose b'),
          assert(b(1):-write('bb1')).

等等。

我尝试的是:

assert(a(1):-write('aa'),pro_a).

但这不起作用。 assert应该只有一个命令吗? (我不确定如何解释这个。)

0 个答案:

没有答案