prolog - 如何查看 Prolog 查询的详细顺序(执行)?

标签 prolog visualization visualizer

假设我有这个 Prolog 程序:

loves(vincent, mia).
loves(marcellus, mia).
jealous(A, B) :- loves(A, C), loves(B, C).

使用查询jealous(A,B)。我对Prolog非常陌生,我想知道如何才能看到程序运行的确切顺序并采取其这个查询的方法?我尝试过使用 trace, Jeremy(A,B). 命令,但它只给了我:

有没有更详细的解决方案? :/

enter image description here

最佳答案

你见过Prolog Visualizer吗? ?

当您进入该页面时,请务必单击右上角的图标以了解更多信息。

enter image description here

享受吧。


第 10 步(共 49 步)后的屏幕截图。

enter image description here

完成所有步骤后给出的示例屏幕截图。

enter image description here


Prolog Visualizer 使用一种稍微不标准的方式来输入查询,即以问号 (?) 结束查询,例如

jealous(A,B)?

如果您没有在左侧的输入区域中发布查询,您将收到错误消息,例如

enter image description here

您的示例的 Prolog Visualizer 的输入是

loves(vincent, mia).
loves(marcellus, mia).
jealous(A, B) :- loves(A, C), loves(B, C).
jealous(A,B)?

当 Prolog Visualizer 完成示例时,请注意右侧绿色的四个结果

enter image description here


如果您使用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/

相关文章:

prolog - 如何使用 JPL 获取 swi-prolog 控制台输出?

database-design - Prolog 中的知识表示 - 如何存储数据?

javascript - 如何显示带有跳过值的连续折线图(在 Zingchart 中)?

java - 从 Java 内部监控 Java

python - 如何使用 ETE Toolkit (Python) 更改节点标签上的字体方向

list - Prolog统一和优化

Prolog:And-Or 表达式( bool 函数)

javascript - 这是哪种音频频谱分析仪?

visual-studio - Visual Studio : Dataset and DataTable Visualizer not working in watch window

仅在 Android 6.0 中出现 Android Visualizer 错误