- 631 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 04:07:06 ]
- >>630 最初の質問への答え
AがリストLのなかに存在するかどうかは ?- append(L0,[A|L1],L). または ?- member(A,L). で確かめることができます。それで最初の質問は 部分集合([],L). 部分集合([A|R],L) :- member(A,L),部分集合(R,L). つまり、要素として存在しないケースの節を定義しない! ことによって実現します。 append/3とmember/2はほとんどのProlog処理系で「組み込み述語」となっているため ユーザが定義する必要はありませんが、 append([],X,X). append([U|X],Y,[U|Z]) :- append(X,Y,Z). member(A,[A|_]). member(A,[_|R]) :- member(A,R). がそれぞれの定義です。
|

|