将静态列表传递给谓词

时间:2017-11-30 20:59:49

标签: prolog

我是Prolog的初学者,我很难理解为什么这段代码不能像我期望的那样工作。

这是我的数据库:

p([1, 2, 3]).
isFirstElement(X, [H|_]) :- X = H.

这是我的控制台:

?- p(X).
X = [1, 2, 3].

?- isFirstElement(1, p(X)).
false.

?- isFirstElement(1, [1, 2, 3]).
true.

对isFirstElement的第一次调用不会返回true,我不知道为什么。 p(X)没有被评估吗?我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

isFirstElement的第二个参数应该是列表,而不是谓词。

isFirstElement(1, X)