J'implémente actuellement une langue différente (Shen) dans Clojure../ dans Clojure (symbole qualifié?)
Shen a un symbole "./" mais dans Clojure, il est interprété avant l'évaluation et entraîne donc une erreur. Je n'ai pas besoin de "./" dans la macro qui compile cette fonction en code Clojure.
Y at-il un moyen d'ignorer cela? Je pense qu'il est interprété comme un symbole qualifié mais sans nom, puisque le remplacer par un/ou xyz/entraîne les mêmes messages d'erreur.
Ma macro actuelle est aussi simple que
(defmacro kl/trap-error [x [y z r]] `(try ~x (catch Exception '~z ~r)))
Mais quand je l'appelle avec le code Shen arrive ceci:
kl=> (trap-error (/ 1 0) (./ E (error-to-string E)
RuntimeException Invalid token: ./ clojure.lang.Util.runtimeException (Util.java:156)
CompilerException java.lang.RuntimeException: Unable to resolve symbol: E in this context, compiling:(NO_SOURCE_PATH:0)
CompilerException java.lang.RuntimeException: Unable to resolve symbol: E in this context, compiling:(NO_SOURCE_PATH:89)
J'espère que quelqu'un peut me aider.
Merci d'avance. Ceci n'est pas possible sans modifier le lecteur Clojure (un privilège qui n'est pas donné aux programmeurs Clojure)
En CL, vous pouvez utiliser | ./ |, je ne sais pas si cela fonctionne pour Clojure. – Daimrod
Autant que je sache, vous auriez besoin d'un lecteur personnalisé pour le faire dans Clojure, mais je ne suis pas sûr. – danlei
@danlei: Mais pour autant que je sache, Clojure n'a pas de moyen standard pour définir une macro de lecteur, vous devez [pirater un peu] (http://briancarper.net/blog/449/clojure-reader-macros) et ce n'est pas vraiment apprécié. – Daimrod