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