3
是什麼這之間的區別:差異
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應該是如果我G \= X
取代dif(G, X)
出現恰好n次列表L.原子,我不獲得預期的結果。有人能告訴我這兩個操作員有什麼區別嗎?我可以使用除dif(G, X)
之外的其他任何內容嗎?
本示例在SWI-Prolog中正常工作,但在Amzi中不起作用!序言。
我有一個類似的問題,有很多有用的答案:http://stackoverflow.com/questions/13757261/using-or-dif?rq=1 – 2013-05-15 08:49:38