なあ、再帰関数好きな人いる? パート2 [転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0431デフォルトの名無しさん
2015/09/25(金) 10:37:41.00ID:gAqqsE90append([U|X],Y,[U|Z]) :- append(X,Y,Z).
% の引数順序を逆にした上で-,=オペレータを使って一つの複合項に仕立てる
% そして述語名もappendから差分に変更した
差分(Y-Y=[]). % L-L=[] である
差分([U|Z]-Y=[U|X]) :- % [U|Z]-Y=[U|X] も差分関係にある
差分(Z-Y=X). % Z-Y=X が差分関係にあるならば
?- 差分([a,b,c]-Y=X).
Y=[a,b,c], X=[];
Y=[b,c], X=[a];
Y=[c], X=[a,b];
Y=[], X=[a,b,c];
false.
% append/3の非決定性の使用は、実はリストの差分を求めている。
■ このスレッドは過去ログ倉庫に格納されています