私は現在、Clojureで別の言語( Shen )を実装しています。
Shenには記号「./」がありますが、Clojureではこれは評価前に解釈されるため、エラーが発生します。この関数をClojureコードにコンパイルしているマクロ内に「./」は必要ありません。
これを無視する方法はありますか?a/またはxyz/に置き換えると同じエラーメッセージが表示されるため、修飾記号として解釈されますが、名前はないと思います。
私の現在のマクロは
(defmacro kl/trap-error [x [y z r]] `(try ~x (catch Exception '~z ~r)))
しかし、Shenコードで呼び出すと、次のようになります。
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)
誰かがこれを手伝ってくれることを願っています。
前もって感謝します。