【发布时间】:2010-11-18 21:31:49
【问题描述】:
假设我想在 Prolog 中为 Prolog 程序制作规则依赖图。比如下面这个程序
foo(X) :- bar(X, 0).
bar(A, B) :- quux(A), coox(B).
baz.
将导致以下结果为真(通过使用assert):
depends(foo, [bar]).
depends(bar, [quux, coox]).
depends(baz, []).
或者类似上面的东西,我可以很容易地用来制作图表。我一直在考虑的方法是将输入文件的行作为字符串读取并对其执行一些简单的搜索和替换,但这看起来像一个丑陋的、不像 Prolog 的 hack。还有其他利用 Prolog 元逻辑功能的选项吗?
【问题讨论】:
-
由于 Prolog 允许基于参数数量的谓词名称重载,因此您最好使用
Name/NArgs术语而不是简单名称。
标签: prolog