В чем разница между этим:разница между Х = Y и диф (X, Y)
X \= Y
и этот кусок кода:
dif(X, Y)
Я думал, что они должны вести себя но они этого не делают. Вот пример:
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).
А вот некоторые звонки:
?- 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 должен быть атом, что происходит ровно N раз в списке L. Если я заменяю dif(G, X)
с G \= X
, я не получить ожидаемый результат. Может ли кто-нибудь сказать мне, в чем разница между этими двумя операторами? Могу ли я использовать что-либо еще, кроме dif(G, X)
?
Этот пример работает префектно в SWI-Prolog, но не работает в Amzi! Пролог.
У меня был аналогичный вопрос, который получил много полезных ответов: http://stackoverflow.com/questions/13757261/using-or-dif?rq=1 –