我有一个关于在Prolog中使用setof的存在性限定符(即^)的问题。
在使用SICStus时,尽管许多网站声称不这样做,但在下面的代码中似乎确实对S进行了量化(使用标准的母亲/孩子事实,我没有在此处包含):
child(M,F,C) :- setof(X,(mother(S,X)),C).
我使用以下方法检查统一性:
child(M,F,C) :- setof(X-S,(mother(S,X)),C).
因此,使用存在运算符的以下代码似乎没有任何区别:
child(M,F,C) :- setof(X,S^(mother(S,X)),C).
有什么想法吗?在什么情况下需要使用unifier呢?
谢谢!
^
的行为,但我对结果不满意。 - David Tonhofer