現在、私はClojureに異なる言語(Shen)を実装しています。./ in Clojure(修飾シンボル?)
Shenには記号「./」がありますが、Clojureではこれが評価前に解釈され、エラーが発生します。 私はClojureコードのためにこの関数をコンパイルしているマクロの中に "./"は必要ありません。
これを無視する方法はありますか? これは、修飾されたシンボルとして解釈されると思いますが、名前のない場合は、/またはxyz /で置き換えると同じエラーメッセージが表示されるためです。
私は次のことが起こるシェンコードでそれを呼び出したときに私の現在のマクロは
(defmacro kl/trap-error [x [y z r]] `(try ~x (catch Exception '~z ~r)))
のと同じくらい簡単です。しかし:
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)
私は、誰かがこれで私を助けることができると思います。
ありがとうございます。
CLでは| ./ |を使用できますが、Clojureで動作するかどうかわかりません。 – Daimrod
私が知る限り、Clojureでこれを行うにはカスタムリーダーが必要ですが、わかりません。 – danlei
@ダンリー:しかし、私が知っている限り、Clojureは読者のマクロを定義する標準的な方法がないので、あなたは[ちょっとハックする]必要があります(http://briancarper.net/blog/449/clojure-reader-macros )それは本当に感謝していない。 – Daimrod