簡體   English   中英

Prolog 生成列表終止

[英]Prolog Termination of Generated List

N #>= 0, N #< 3, length(Ls, N), false.

上面的表達式在 swi prolog 終端上發布時不會終止。

我試過交換目標的順序。

length(Ls, N), N #>= 0, N #< 3,  false.

length(Ls, N), N >= 0, N < 3, false.

我正在為 x86_64-linux 使用 SWI-Prolog 版本 8.4.3

此時 N 仍然是 var。 改用(如果你真的想使用 clpfd - 我沒有看到原因):

?- N #>= 0, N #< 3, label([N]), length(Ls, N), false.
false.

長度(Ls,N),N >= 0,N < 3,假。

這將計算 N 次嘗試不同的值,直到所有條件都為真,但false永遠不會為真。

所以這就是“count until false is true”,也就是“count forever”,死循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM