문제
프롤로그 에이 코드가 있습니다.
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에서 사용하는 방법을 알 수 없습니다. 내가 뭔가를 놓치고 있습니까?
해결책
선불로 첫 번째 줄을 수정하십시오 :-
:
:- dynamic(player_at/1).
없이 :-
라인은 술어를 드러냅니다 dynamic/1
, 기존을 실행하는 대신 dynamic
술부.
다른 Prolog 구현 (그러나 Gprolog은 아님)도 이것을 지원합니다.
:- dynamic player_at/1.
제휴하지 않습니다 StackOverflow