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