Prolog:谓词,用于检查列表中的元素是否存在于预定义列表中

时间:2014-04-29 19:00:58

标签: prolog logic-programming

我将事实定义为:

list([1,2,3,4,5]).

现在,我想写一个谓词 pred(X),如果列表中存在X的所有元素,它就会成功。例如,pred([1,3,4,2])应该成功,而pred([2,6,8])不应该成功。

我尝试了以下内容:

pred([],[]).
pred([H|T]) :- list(X), member(H,X), pred(T). 

但是,它始终提供 false

1 个答案:

答案 0 :(得分:2)

你有一个递归子句但不是一个基本子句。因此,当您完成遍历列表时,最后一次调用是pred([]),这将失败,因为它没有与谓词的单个子句的头部统一。