2015-04-02 76 views
0

我希望能退回和動態斷言事實的程序location無法作出事實動態在SWI-Prolog的

location(egg, duck_pen). 

基於諮詢在線(包括No permission to modify static procedure),我嘗試添加以下每個到我的源代碼,否則,只包含上面的表述:

dynamic location/2. 
dynamic(location/2). 
dynamic(location)/2. 

前兩個版本給我這個錯誤在編譯時(當加載到SWI-Prolog的):

No permission to redefine built-in predicate `(dynamic)/1' 
Use :- redefine_system_predicate(+Head) if redefinition is intended 

的最後一個版本並沒有給我在編譯時錯誤,但是,無論我把它的開頭或文件的末尾,我得到一個錯誤,當我試圖收回我的事實:

?- retract(location(egg,duck_pen)). 
ERROR: retract/1: No permission to modify static procedure `location/2' 

我正在使用SWI-Prolog版本6.6.5。

回答

1

使用

: - 動態位置/ 2。

位置(X,Y)等等等等