我在Prolog中有这个代码:
dynamic(player_at/1).
player_at(house).
goto(X) :- retract(player_at(house)), assert(player_at(X)).
Run Code Online (Sandbox Code Playgroud)
但我仍然得到这个错误:
uncaught exception: error(permission_error(modify,static_procedure,player_at/1),retract/1)
Run Code Online (Sandbox Code Playgroud)
当我执行goto(foo)时.
我已经阅读了动态文档,但我无法弄清楚如何使用它,至少在gprolog中.我错过了什么吗?
pts*_*pts 13
通过前置修复第一行:-:
:- dynamic(player_at/1).
Run Code Online (Sandbox Code Playgroud)
没有:-该行将dreefine谓词dynamic/1,而不是执行现有的dynamic谓词.
其他prolog实现(但不是gprolog)也支持这个:
:- dynamic player_at/1.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3619 次 |
| 最近记录: |