문제

프롤로그 에이 코드가 있습니다.

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.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top