对于我的编程类(class)作业,我必须在不使用任何预定义谓词(不包括 、
和 ;
)的情况下编写一些 Prolog 代码,但没有办法使用=
,因为我必须检查变量 A
是否等于(可以识别)某个 foo(B, C)
。
由于这是不允许的,所以我想实现我自己的谓词 myUnification/2
,它的行为本质上应该是相同的,但我不知道如何去做。我尝试查看 SWI-Prolog 文档寻求帮助,但是 it only explains what the predicate does, not how it actually works internally .
最佳答案
它就在文档中:-D
=(Term, Term).
要使用“unify”而不是“=”,请定义:
unify(A, A).
你现在可以像这样施展魔法:
?- unify(X, foo(a, b)).
X = foo(a, b).
关于prolog - 在 Prolog 中定义谓词作为 (=)/2(统一)的替代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75219379/