为什么def会影响Clojure 1.2中的数字精确推广?

时间:2013-10-12 21:30:20

标签: clojure

考虑一下:

user=> (let [i Integer/MAX_VALUE] (+ i i))
java.lang.ArithmeticException: integer overflow (NO_SOURCE_FILE:0)
user=> (def i Integer/MAX_VALUE) 
#'user/i
user=> (+ i i)
4294967294

为什么let精确推广不会发生,我们会遇到溢出异常,但def精度提升为Long?这是一个错误吗?

0 个答案:

没有答案