函数的读取时评估工作如预期。例如,将 #=(+ 1 1)
交给 REPL 确实会返回 2
。但是,诸如 (if true 1 0)
的读取时评估形式会导致错误。错误报告不跨宏和特殊形式一致。
#=(if true 1 0)
;;=> Can't resolve if
#=(let [] nil)
;;=> Wrong number of args (2) passed to: clojure.core/let
这是预期行为吗?像 Common Lisp 这样的语言在这种情况下不会产生错误——例如,代码 #.(if t 1 0)
返回 1
。