Soyez gentil, car mon macrofoo est faible.Accéder à un local d'une macro dans une autre exécutée dans le cadre du let
Ce que je voudrais faire est quelque chose comme ceci:
(defmacro foo [x] `(dosync (alter x# conj x)))
(defmacro bar [] `(let [x# (ref [])] (foo 3)))
Est-ce possible? Je ne peux pas juste (let [x ..] ..)
en raison de la capture de symboles. REMARQUE: Je suis conscient que cet exemple est trivial et non macro-digne, mais c'est l'exemple le plus simple que je pourrais trouver.
Une chance que vous pourriez fournir un exemple moins simple, mais plus réaliste? Je trouve vraiment difficile de dire ce que vous essayez de faire (même si vous avez votre propre réponse!). Je demande juste de comprendre ce qui se passe, pas d'inquiétude si vous préférez passer à autre chose. :-) –
http://gist.github.com/381870 Est un meilleur exemple de ce que j'essayais de faire. Cela ne fonctionne toujours pas à cause d'une raison sans rapport. – Rayne