我试图通过绘制两者的反向链接过程来确定哪个成员实现更有效。
标准实施:
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方法绘制反向链接过程。
提前致谢!
答案 0 :(得分:2)
appendMember(X,List).
立即得到满足,无论你对2个参数有什么,因为它们是未连接的,未实例化的变量。
因此,我认为你应该删除它。