/* 如果列表 Ys 是用 Y 替换列表 Xs 中所有出现的 X 的结果,则substitute(X,Y,Xs,Ys) 为真。
这是我到目前为止所拥有的:
subs(_,_,[],[]).
subs(X,Y,[X|L1],[Y|L2]):- subs(X,Y,L1,L2).
subs(X,Y,[H|L1],[H|L2]):- X\=H, not(H=[_|_]), subs(X,Y,L1,L2).
subs(X,Y,[H|_],[L2]):- X\=H, H=[_|_], subs(X,Y,H,L2).
我的代码有效,只是它省略了嵌套列表后面的元素。例如:
?- subs(a,b,[a,[a,c],a],Z).
Z = [b, [b, c]] .
我应该在这个程序中添加什么?