我希望能够为程序location
动态收回和断言事实:
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。
答案 0 :(得分:1)
使用
: - 动态位置/ 2.
位置(X,Y)blah blah