我有一个简单的程序来检查一个X
元素是否属于一个列表:
member2(X, [X|_]).
member2(X,[_|T]):- member2(X,T).
我正在尝试以扩展形式编写它(因为在以前的方式中行为不是那么清楚)。所以我用以下方式写了它:
member2(X, [X|_]).
member2(X,Y):- Y = [_|T],
member2(X,T).
所以意思就更清楚了:
我有一个代表基本情况的事实(如果X
元素位于列表的头部,则该元素属于列表)。
规则说我必须证明两件事:
1) Y = [_|T]
。这是真的,因为匿名变量_
与任何东西都统一。
2)递归搜索X
尾列表中的元素。
好的,我认为我的推理是正确的,但是该程序的第二个版本不起作用!我认为问题可能出在该Y = [_|T]
部分