سؤال
ولدي هذا الرمز في برولوج:
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)
وعندما تنفيذ غوتو (فو).
ولقد قرأت ديناميكية وثائق ، ولكن أنا لا يمكن معرفة كيفية استخدامها، على الأقل في gprolog. أنا شيء مفقود؟
المحلول
وإصلاح الخط الأول من قبل معلق مسبقا :-
:
:- dynamic(player_at/1).
وبدون :-
الخط سيكون dreefine dynamic/1
المسند، بدلا من تنفيذ المسند dynamic
القائمة.
وتطبيقات حاسوب أخرى (ولكن ليس gprolog) تدعم هذا أيضا:
:- dynamic player_at/1.
لا تنتمي إلى StackOverflow