Есть ли команда, чтобы показать указатель поиска каждого шага в Прологе? - PullRequest
0 голосов
/ 26 октября 2019

Я пытаюсь понять точный порядок поиска Пролога. В моем сценарии университетского курса показаны следы , которые точно показывают, где находится «указатель» в данный момент. Пусть нашей базой данных будет следующее:

a(a, a, b).
a(a, a, c).
a(a, a, d).
a(a, a, e).
a(a, a, f).

Тогда вывод из Пролога должен выглядеть примерно так:

?- a(a, a, f).
   a(a, a, b).     fail
   a(a, a, c).     fail
   a(a, a, d).     fail
   a(a, a, e).     fail
   a(a, a, f).     succ

Здесь я могу точно видеть, где находится прологпоиск прямо сейчас и возможно ли объединение или нет. Это представление было бы очень полезно при попытке понять правила и рекурсию в Прологе.

Я пытался использовать trace / 0 , trace / 1 и debug / 0 . Но это просто показывает мне довольно запутанную и ненужную информацию IMO.

Есть ли в Прологе команда для просмотра того, что я упоминал выше? Спасибо!

1 Ответ

0 голосов
/ 28 октября 2019
  [user] .

  a(a, a, b).
  a(a, a, c).
  a(a, a, d).
  a(a, a, e).
  a(a, a, f).

  end_of_file .

_

  ?- leash(-all) .
  true.

  ?- spy(a) .
  true.

_

  ?- a(P,Q,R) , false ; true .

   * Call: (11) a(_4702, _4704, _4706)
   * Exit: (11) a(a, a, b)
   * Exit: (11) a(a, a, c)
   * Exit: (11) a(a, a, d)
   * Exit: (11) a(a, a, e)
   * Exit: (11) a(a, a, f)
  true.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...