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

0 ответов

Другие вопросы по тегам