是否有命令显示Prolog中每个步骤的搜索指针?

是否有命令显示Prolog中每个步骤的搜索指针?,prolog,Prolog,我试图理解Prolog的确切搜索顺序。在我的大学课程脚本中,显示的轨迹精确显示了指针当前所在的位置。让以下内容成为我们的数据库: a(a, a, b). a(a, a, c). a(a, a, d). a(a, a, e). a(a, a, f). 那么Prolog的输出应该是这样的: ?- a(a, a, f). a(a, a, b). fail a(a, a, c). fail a(a, a, d). fail a(a, a, e).

我试图理解Prolog的确切搜索顺序。在我的大学课程脚本中,显示的轨迹精确显示了指针当前所在的位置。让以下内容成为我们的数据库:

a(a, a, b).
a(a, a, c).
a(a, a, d).
a(a, a, e).
a(a, a, f).
那么Prolog的输出应该是这样的:

?- 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
在这里,我可以确切地看到prolog现在正在搜索的地方,以及统一是否可能。当试图理解Prolog中的规则和递归时,这个视图将非常有用

我已尝试使用跟踪/0、跟踪/1和调试/0。但它只是向我展示了相当混乱和不必要的信息

在Prolog中是否有一个命令可以查看上面提到的内容?谢谢

_

_


你观察过你著名的烧瓶中每个分子的精确轨迹吗?不,你没有。出于类似的原因,观看Prolog的每一个小动作也没有太大帮助。相反,看看更好的方法。@false谢谢你的回答。你的链接让我很困惑,因为我刚刚开始学习prolog,我不知道有什么例外。从命令式编程开始,我一直知道执行顺序。我想知道prolog程序的sme,至少在它们很小的时候。请看链接的例子!是的,目前您可以跳过异常。
  [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.