0

次のような 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)orを入力して、ユーザーが入力した内容に応じて、それぞれorb(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コマンドは 1 つしかないはずですか? (これを説明する方法がわかりません)。

4

0 に答える 0