我目前正在 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)
我希望有人可以帮助我。
提前致谢。