我希望能够为该过程动态撤回和断言事实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。