Je possède ce code Prolog:Déclarant un prédicat dynamique gprolog
dynamic(player_at/1).
player_at(house).
goto(X) :- retract(player_at(house)), assert(player_at(X)).
Mais je reçois toujours cette erreur:
uncaught exception: error(permission_error(modify,static_procedure,player_at/1),retract/1)
quand j'exécute goto (foo).
J'ai lu le dynamic documentation, mais je n'arrive pas à comprendre comment l'utiliser, au moins dans gprolog. Est-ce que je manque quelque chose?
Finalement, vous devriez obtenir déjà une exception lors de la consultation de votre programme. Il ne devrait pas permettre un fait dynamique (_). La norme ISO dit seulement que dynamic est une directive, mais dans la plupart des Prologs c'est aussi un built-in, et ne peut donc pas être affirmé comme un fait. –