Clojure函数在算术表达式中

时间:2016-01-31 23:57:19

标签: clojure

如何在clojure中编写以下ocaml表达式:

fun x -> (f (x +. dx) -. f x) /. dx

我很简单地尝试了以下表达式,但是引发了异常:

(defn derivative [dx f]
  (fn [x] 
    (/ (- f [(+ x dx)] f [x]) dx)))

((derivative 0.01 (fn [x] (* x x))) 1)

java.lang.ClassCastException:ableitung $ eval5058 $ fn__5059无法强制转换为java.lang.Number          Numbers.java:135 clojure.lang.Numbers.minus

1 个答案:

答案 0 :(得分:4)

您需要应用与f相关的(f x y ..)。您可能也不应该将单个向量参数传递给f,尽管没有定义它是不可能的:

(defn derivative [dx f]
  (fn [x] 
    (/ (- (f (+ x dx)) (f x)) dx)))