2
我正在嘗試使用Clojure在SICP中進行一些練習,但是我正在執行辛普森規則(例如1-29)的錯誤。這是否與懶惰/渴望的評價有關?有想法該怎麼解決這個嗎?錯誤以及代碼都低於:爲什麼當我嘗試在Clojure中使用辛普森規則時會出現轉換錯誤?
java.lang.ClassCastException:用戶$辛普森$ h__1445不能clojure.lang.Numbers.divide被轉換爲java.lang.Number中 (Numbers.java:139)
下面是代碼:
(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)))