Вызов процедуры во время assert в Прологе
У меня есть запрос 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)
программа для отображения 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
должен иметь только одну команду? (Я не уверен, как это объяснить).