这有什么区别:
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
我不会得到预期的结果。有人能告诉我这两个运营商有什么区别吗?我可以使用除 以外的任何东西dif(G, X)
吗?
此示例在 SWI-Prolog 中完美运行,但在 Amzi 中不起作用!序言。