gpt4 book ai didi

prolog - 在 gprolog 中声明一个动态谓词

转载 作者:行者123 更新时间:2023-12-04 10:32:57 24 4
gpt4 key购买 nike

我在 Prolog 中有这个代码:

dynamic(player_at/1).
player_at(house).
goto(X) :- retract(player_at(house)), assert(player_at(X)).

但我仍然收到此错误:
uncaught exception: error(permission_error(modify,static_procedure,player_at/1),retract/1)

当我执行 goto(foo) 时。

我已阅读 dynamic documentation ,但我不知道如何使用它,至少在 gprolog 中是这样。我错过了什么吗?

最佳答案

通过添加 :- 来修复第一行:

:- dynamic(player_at/1).

:-该行将细化谓词 dynamic/1 , 而不是执行现有的 dynamic谓词。

其他 prolog 实现(但不是 gprolog)也支持这一点:
:- dynamic player_at/1.

关于prolog - 在 gprolog 中声明一个动态谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/844043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com