在SWI-Prolog中是否有任何內置謂詞會始終失敗並阻止機器回溯 - 它會停止程序立即執行(這不是fail/0
的作用)? 我可以使用切割,但我不喜歡它們。序言,失敗,不要回溯
做一些像!, fail
對我來說不是問題,但爲了完成我想要的,我將不得不在更多的位置使用切割,這是我不喜歡的。
在SWI-Prolog中是否有任何內置謂詞會始終失敗並阻止機器回溯 - 它會停止程序立即執行(這不是fail/0
的作用)? 我可以使用切割,但我不喜歡它們。序言,失敗,不要回溯
做一些像!, fail
對我來說不是問題,但爲了完成我想要的,我將不得不在更多的位置使用切割,這是我不喜歡的。
你可以使用異常。根據你的問題 - 它應該有所幫助。 參考link
太糟糕了,這是削減的目的。
你可以使用明確設計的機制來幫助你完成某件事,但你不喜歡它?
您可以隨時使用不,這是切語法糖失敗
兩個備選方案浮現在腦海中:
backtrack(true)
或backtrack(false)
長期通行證如果它設置爲backtrack(false)
,或者如果backtrack(true)
繼續。請注意,這實際上不會阻止回溯;它應該只啓用快速故障。即使你的證明樹很深,這應該提供一種快速的方法來防止在回溯時執行某些代碼。就我個人而言,我已經使用過兩種方法 - 第一種是我在編寫代碼之前已經預料到需要,後者是我沒有使用的。
我沒有看到任何東西,當我點擊你的鏈接 – Nacht 2012-04-25 15:52:07