有没有办法强制 prolog CLI 返回仅包含我感兴趣的变量的查询结果?一个简单的例子是:
?- mother(M, C1), father(F, C1).
它返回所有M
、F
和C1
的绑定(bind)。但我只对 M
和 F
感兴趣,而 C1
只是困惑。在这个简单的示例中,这还不错,但对于具有许多帮助器变量的较长查询,它就更麻烦了。
有没有一种简单的方法可以通过查询来表达这一点;我的意思是没有定义单独的规则?
干杯, 雅采克
最佳答案
执行此操作的一个非常直接的方法是使用 library(lambda)
作者:Ulrich Neumerkel。
例如,在您的情况下,给出示例事实:
mother_child(m, c). father_child(f, c).
我们收到您的询问:
?- mother_child(M, C), father_child(F, C). M = m, C = c, F = f.
我们想要投影变量C
。
因此,我们将整个查询包装在 lambda 表达式中,这样只有 M
和 F
具有全局范围因此由顶层报告:
?- M^F+\(mother_child(M, C), father_child(F, C)). M = m, F = f.
您想要转换的变量越多,这显然变得越有用。您只需指定希望顶层报告的变量即可。
关于Prolog:忽略输出中不需要的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43183904/