假设我有这个 Prolog 程序:
loves(vincent, mia).
loves(marcellus, mia).
jealous(A, B) :- loves(A, C), loves(B, C).
使用查询jealous(A,B)。
我对Prolog非常陌生,我想知道如何才能看到程序运行的确切顺序并采取其这个查询的方法?我尝试过使用 trace, Jeremy(A,B).
命令,但它只给了我:
有没有更详细的解决方案? :/
最佳答案
你见过Prolog Visualizer吗? ?
当您进入该页面时,请务必单击右上角的图标以了解更多信息。
享受吧。
第 10 步(共 49 步)后的屏幕截图。
完成所有步骤后给出的示例屏幕截图。
Prolog Visualizer 使用一种稍微不标准的方式来输入查询,即以问号 (?) 结束查询,例如
jealous(A,B)?
如果您没有在左侧的输入区域中发布查询,您将收到错误消息,例如
您的示例的 Prolog Visualizer 的输入是
loves(vincent, mia).
loves(marcellus, mia).
jealous(A, B) :- loves(A, C), loves(B, C).
jealous(A,B)?
当 Prolog Visualizer 完成示例时,请注意右侧绿色的四个结果
如果您使用SWI-Prolog当你了解之后 syntactic unification , backtracking并编写更高级的代码,您会发现它很有用:
Overview of the SWI Prolog Graphical Debugger
有关其他有用的 Prolog 引用,请参阅:Useful Prolog references
关于prolog - 如何查看 Prolog 查询的详细顺序(执行)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66554847/