Diferencia entre X \ = Y y dif (X, Y)
¿Cuál es la diferencia entre esto?
X \= Y
y esta pieza de código:
dif(X, Y)
Pensé que deberían comportarse igual, pero no lo hacen. Aquí está el ejemplo:
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).
Y aquí hay algunas llamadas:
?- 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 debe ser el átomo que aparece exactamente N veces en la lista L. Si sustituyodif(G, X)
conG \= X
, No consigo el resultado esperado. ¿Alguien puede decirme cuál es la diferencia entre estos dos operadores? ¿Puedo usar cualquier otra cosa exceptodif(G, X)
?
Este ejemplo funciona perfectamente en SWI-Prolog, ¡pero no funciona en Amzi! Prólogo.