Prolog差异列表:代码适用于SWI和GNU Prolog,但不适用于Yap



当我在GNU Prolog和SWI Prolog上运行差异列表时,这段代码正确地计算了差异列表中的元素数量。然而,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)在被问及此查询时不会终止?

Yap 5.1.3 中似乎有一个错误

新版本(用Yap 6.2.2测试)运行良好:

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

相关内容

  • 没有找到相关文章

最新更新