私は2つのリストの交差を作ろうとしています(つまり、リストCにはAとBにある要素のみが含まれています)が、私が理解しているように、2つのリスト+ Cの要素の任意の量の分離を取得します.
次のように動作することを意図しています:
- X が C にある場合、A と B の両方にある必要があります (X は C のすべてのメンバーを反復する必要があると思います!?)
- 述語:
d(A,B,C) :- (member(X,D)->member(X,A),member(X,B)).
あなたは言うことができますか: 私の文と述語は等しくありませんか、それとも別の間違いを犯しましたか?
例:
?- [user].
|: d(A,B,C) :- (member(X,D)->(member(X,A),member(X,B))).
|: % user://1 compiled 0.01 sec, 612 bytes
true.
?- d([a,b],[b,c],C)
| .
C = [b|_G21] .
?- d([a,b],[b,c],[b]).
true .