[英]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.