Prolog标准成员/ 2对成员/ 2实施附加?

时间:2017-10-24 20:05:43

标签: prolog append member

我试图通过绘制两者的反向链接过程来确定哪个成员实现更有效。

标准实施:

isMember(X,[X|Tail]).  
isMember(X,[H|Tail]) :- isMember(X,Tail).

追加实施:(来自我的课堂笔记)

appendMember(X,List).  
appendMember(X,List) :- myAppend(List1,[X|List2],List).  

myAppend([],List,List).
myAppend([H|List1],List2,[H|Result]) :- myAppend(List1,List2,Result).

当我在TK Eclipse上使用跟踪器时,我通过递归调用获得标准实现的预期输出,但是append实现只是立即成功退出。

我想知道为什么会这样,以及如何为append方法绘制反向链接过程。

提前致谢!

1 个答案:

答案 0 :(得分:2)

appendMember(X,List).立即得到满足,无论你对2个参数有什么,因为它们是未连接的,未实例化的变量。

因此,我认为你应该删除它。