У меня есть этот код в прологе:
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).
Я прочитал динамическую документацию , но не могу понять, как ее использовать, по крайней мере в gprolog. Я что-то упустил?