quel est le problème avec ce code dans Dr.Scheme en utilisant Pretty Big? Je me souviens de faire des choses semblables dans le passé sans problème."set !: pas d'identifiant dans: ..." plt erreur système
(lambda (x y) (set! (Frame-variables res) (append (Frame-variables res) (list (cons x y)))))
qui renvoie l'erreur suivante:
set!: not an identifier in: (Frame-variables res)
si je laisse de côté la partie (set! (Frame-variables res) ...)
il fonctionne très bien, sauf bien sûr que ma liste ne change pas vraiment. donc il reconnaît le deuxième (Frame-varialbes res)
mais pas le premier? ou quel est le problème avec set!
dans ce contexte?
J'espère que vous reconnaissez que j'ai une structure appelée Frame
avec un champ variables
qui est une liste.
Bonne réponse en général, mais aussi voir SRFI-17 et supercherie, fournissent tous les deux un tel "ensemble généralisé"! " Bien qu'il soit vrai qu'en général vous ne devriez pas utiliser la mutation si cela peut être évité, il est parfois utile de le faire - et un avantage des setters généralisés est que vous pouvez écrire une macro «inc!» Qui devient très utile. –