私はL1とL2の2つのリストを持っていると、次のことを達成しようとしていました。 L1からのL2の「減算」。リストと何か([_])と何か(_)の違い
例:
L1 = [1,2,3]
L2 = [2,3,4,5]
R = [1]
私はこれを達成することができましたが、私は_
と[_]
の違いが何であるかを伝えることはできません。
私が行う場合は、この:
diferencia([],_,[]).
diferencia([X|Tail],L2,R):-
member(X,L2),
diferencia(Tail,L2,R).
diferencia([X|Tail],L2,[X|R]):-
not(member(X,L2)),
diferencia(Tail,L2,R).
それは私がこれを行う場合、それは偽の私を与え、作品:
diferencia([],[_],[]).
diferencia([X|Tail],L2,R):-
member(X,L2),
diferencia(Tail,L2,R).
diferencia([X|Tail],L2,[X|R]):-
not(member(X,L2)),
diferencia(Tail,L2,R).
は、私は以来、L2は常に動作するはず何[_]
を含むリストを引き受けますリストになる
変数と一致しませんあなたの例では何も
可能性が一つの要素。 '_'という2つの変数がある場合、それらは統合されません。それらは2つの異なる変数です。 – svick
通常の変数は、匿名変数が通常の変数でパターンにマッチするときにできないことを実行できないことを暗示するために使用されています。とにかく上記の例では、2つの匿名変数が必ずしも統合されないという事実が示されていました。とにかく明確化のおかげで! – m09