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 \= XIch 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.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage