2015-10-04 69 views
1

我:無法縮進()?

:- dynamic blah/2. 
retractall(blah(_,_)). 

但我仍然得到:

No permission to modify static procedure `retractall/1' 

如何刪除等等所有發生的()? 順便說一句,它在swipl控制檯工作!

感謝

回答

1

謂詞retractall/1是一個標準內置謂詞,因此,在大多數系統中,不能由用戶重新定義。在你的代碼中,你試圖爲這個謂詞定義一個事實,因此是錯誤信息。但在控制檯上,您將其用作目標,即您只需調用內置謂詞即可。

如果你想確保有對blah/2謂詞沒有條款時加載源文件,然後使用替代initialization/1標準指令:

:- initialization(retractall(blah(_, _))). 
+0

感謝。不適用於我,因爲它似乎初始化()在文件加載後調用。我希望得到相反的結果,即在採集文件之前調用它,以便清理當前狀態(blah())。我需要這主要用於swipl測試,而不是運行程序。我還得到:「語法錯誤:操作員優先級衝突」!再次感謝 – user1019129

+0

@ user1019129:錯過右括號。 – CapelliC

+0

對不起,錯誤是由於不同的原因。 – user1019129