我不确定我的考试如何回答这个问题:
让我们考虑一下这个序言:
p(a,b).
p(b,c).
p(c,a).
q(X,X).
q(X,Y):-p(X,Z),q(Z,Y).
和问题:
?- q(X,X).
有效吗?答案是:
上述目标以无限多种方式实现,但它们都不是 替换X = b。
我真的不明白。 IMO这个谓词可以用3种方式填写:
q(a,a) or q(b,b) or q(c,c).
我在这里不明白?或者答案是错的,我只是浪费时间,答案很好?
答案 0 :(得分:1)
q(X,X).
规则匹配q
的参数相等的任何输入。你可以自己轻松地试试这个:
?- [user].
|: q(X, X).
|: q(X, Y) :- p(X, Z), q(Z, Y).
|: % user://1 compiled 0.00 sec, 1,808 bytes
true.
?- q(b, b).
true.
?- q(X, X), X=b.
X = b.
您可以在最终查询中填写任何Prolog术语,而不是b
。 (请注意,我在这里没有输入p
的定义;这是无关紧要的。)