次のような 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)
を表示し (これまでのところ良い)、別のプロシージャを呼び出すようにします。aa
bb
たとえば、彼が と入力した場合、実行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 つしかないはずですか? (これを説明する方法がわかりません)。