函数的读取时间评估按预期工作。例如,将 #=(+ 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
。