3

このコードは、GNUPrologおよびSWIPrologで実行すると、差分リストの要素数を正しく計算します。ただし、Yapは無限ループに入ります。

count(X-X1,0) :- unify_with_occurs_check(X,X1), !.
count([H|T]-T1,N) :- count(T-T1,M), N is M+1.

?- count([1,2|A]-A,N).

このクエリを尋ねられたときにPrologインタープリター(Yapのような)が終了しないのはなぜですか?

4

1 に答える 1

3

Yap5.1.3にバグがあるようです

新しいバージョン(Yap 6.2.2でテスト済み)は正常に動作します。

?- count([1,2|A]-A,N).
   N = 2
于 2012-07-20T13:32:46.183 に答える