J'essaie d'écrire une macro dans clojure qui configure un espace de noms et y ajoute automatiquement quelques méthodes. Ma macro ne fonctionnait pas et j'ai suivi jusqu'à une déclaration de do. Il n'est pas possible de déclarer un nouvel espace de noms dans un do et immédiatement après déclarer une méthode dans cet espace de noms. Pourquoi?pourquoi je ne peux pas déclarer un espace de noms et une méthode dans un do en utilisant Clojure
Cela ne fonctionne pas:
(ns xyz)
(do
(ns abc)
(prn *ns*)
(defn tst[] (prn "test" *ns*)))
(prn "after" *ns*)
(tst)
Cela fonctionne (déclaration d'espace de noms avant le do):
(ns xyz)
(ns abc)
(do
(prn *ns*)
(defn tst[] (prn "test" *ns*)))
(prn "after" *ns*)
(tst)
Merci pour la lecture, Markus
Ah merci. Ceci explique cela. Je garderai ceci à l'esprit simplement à la macro une fois qu'une version de clojure stable> 1.0 sera disponible. –