小编Fre*_*Hsu的帖子

为什么我在Clojure中尝试使用Simpson规则时会出现强制转换错误?

我正在尝试使用Clojure完成SICP中的一些练习,但是我现在执行Simpson规则的方法出错(例如1-29).这与懒惰/急切的评估有关吗?有想法该怎么解决这个吗?错误和代码如下:

java.lang.ClassCastException:用户$ simpson $ h__1445无法在clojure.lang.Numbers.divide(Numbers.java:139)中强制转换为java.lang.Number

这是代码:

(defn simpson [f a b n]
  (defn h [] (/ (- b a) n))
  (defn simpson-term [k]
    (defn y [] (f (+ a (* k h))))
    (cond 
      (= k 0) y
      (= k n) y
      (even? k) (* 2 y)
      :else (* 4 y)))
  (* (/ h 3)
     (sum simpson-term 0 inc n)))
Run Code Online (Sandbox Code Playgroud)

eager clojure sicp lazy-evaluation

2
推荐指数
1
解决办法
322
查看次数

标签 统计

clojure ×1

eager ×1

lazy-evaluation ×1

sicp ×1