Differenz zwischen X \ = Y und dif (X, Y)
Was ist der Unterschied zwischen diesem:
X \= Y
und dieses Stück Code:
dif(X, Y)
Ich dachte, dass sie sich gleich verhalten sollten, aber sie tun es nicht. Hier ist das Beispiel:
n_puta(L, N, X) :- nputa(L, N, 0, X).
nputa([], N, C, _) :- N = C.
nputa([G|R], N, C, X) :- G = X, nputa(R, N, Y, X), C is Y - 1.
nputa([G|R], N, C, X) :- dif(G,X), nputa(R, N, C, X).
Und hier sind einige Anrufe:
?- n_puta([a,a,b,b,b], 2, X).
X = a ;
false.
?- n_puta([a,a,b,a,b,b], 3, X).
X = a ;
X = b ;
false.
X sollte das Atom sein, das genau N-mal in der Liste L vorkommt. Wenn ich ersetzedif(G, X)
mitG \= X
Ich bekomme nicht das erwartete Ergebnis. Kann mir jemand sagen, was der Unterschied zwischen diesen beiden Operatoren ist? Kann ich etwas anderes verwenden, außerdif(G, X)
?
Dieses Beispiel funktioniert perfekt in SWI-Prolog, aber nicht in Amzi! Prolog.