首页 文章

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

提问于
浏览
3

当我在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)不会终止?

1 回答

  • 3

    在Yap 5.1.3中似乎存在一个错误

    较新的版本(使用Yap 6.2.2测试)工作正常:

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

相关问题