これの違いは何ですか:
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 は、リスト L で正確に N 回出現するアトムでなければなりません。 に置き換えるdif(G, X)
とG \= X
、期待した結果が得られません。これら2つの演算子の違いは何ですか? 以外のものを使用できますdif(G, X)
か?
この例は、SWI-Prolog では完全に機能しますが、Amzi では機能しません! プロローグ。