函数的读时评估按预期工作。例如,将提交给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这样的语言,在类似场景下不会产生错误——例如,代码返回1
。