Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 推广到BigDecimal&x27;不会发生_Clojure - Fatal编程技术网

Clojure 推广到BigDecimal&x27;不会发生

Clojure 推广到BigDecimal&x27;不会发生,clojure,Clojure,我正在使用Clojure 1.5.1。这是我的节目: (def bricks4 (memoize (fn [n] (cond (> 0 n) 0 (= 0 n) 1 (= 1 n) 1 :else (+ (bricks4 (- n 1)) (bricks4 (- n 2))

我正在使用Clojure 1.5.1。这是我的节目:

(def bricks4
  (memoize (fn [n]
             (cond (> 0 n) 0
                   (= 0 n) 1
                   (= 1 n) 1
                   :else (+ (bricks4 (- n 1))
                            (bricks4 (- n 2))
                            (bricks4 (- n 3))
                            (bricks4 (- n 4)))))))
(bricks4 70)引发异常:

ArithmeticException integer overflow  clojure.lang.Numbers.throwIntOverflow (Numbers.java:1388) 
我很困惑,因为我认为Clojure会自动将数字从整数提升到Long,然后再提升到BigDemical


我应该怎么做才能修复这个程序?

Clojure从1.2版开始就没有自动升级到bigint,就像三年前一样?现在的默认设置是为了获得更好的性能,但是您可以通过使用
+'
而不是
+
*'
而不是
*
等方式获得自动升级行为