【发布时间】:2015-05-23 20:32:24
【问题描述】:
这里是一个来自 clojure 的例子:
(let [x 9, y '(- x)]
(println `y)
(println ``y)
(println ``~y)
(println ``~~y))
repl 的输出:
typedclj.macros/y
(quote typedclj.macros/y)
typedclj.macros/y
(- x)
如果我重新排列引用/取消引用的顺序,结果仍然相同(我想知道为什么):
(let [x 9, y '(- x)]
(println `y)
(println ``y)
(println `~`y)
(println `~`~y))
但如果我把波浪号放在前面:
(let [x 9, y '(- x)]
(println `y)
(println ``y)
(println `~`y)
(println ~``~y))
我收到一个奇怪的错误:
CompilerException java.lang.IllegalStateException: Attempting to call unbound fn: #'clojure.core/unquote, compiling:(/Users/kaiyin/personal_config_bin_files/workspace/typedclj/src/typedclj/macros.clj:1:25)
为什么会出现这个错误?
【问题讨论】: