Aşağıdakileri gerçekleştirmeye çalışıyordum, iki listem varsa, L1 ve L2, sonuç (R) olmasını istedim. L1'den L2'nin "çıkarılması".Bir şey ([_]) ile bir şey arasındaki fark nedir (_)
Örnek:
L1 = [1,2,3]
L2 = [2,3,4,5]
R = [1]
Bunu başarmak mümkün WAS ama _
ve [_]
arasındaki fark nedir söyleyemem.
ben yaparsanız bu:
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).
Ben bunu yaparsam, yanlış bana verir, çalışı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).
O zamandan beri L2 olacak hep çalışmalıdır şey [_]
içeren bir liste varsayılabilir liste ol. (
değişken ile Eşleşmeyecek _' gerçekten normal bir değişken değildir. '_' Adlı iki değişkeniniz varsa, bunlar birleşmez, iki farklı değişkenlerdir. – svick
normal değişkeni, anonim değişkenlerin, eşleşme kalıpları söz konusu olduğunda normal bir değişkenin yapamayacağı şeyleri yapamayacağını ima etmek için kullanılmıştır. Yukarıdaki örneklerde, iki anonim değişkenin zorunlu olarak birleşmediği gerçeği ortaya çıkmıştır. Yine de açıkladığın için teşekkürler! – m09