访问绑定到clojure中的var的函数

时间:2013-03-24 10:04:03

标签: clojure

所以,如果我理解这一点,当我写道:

(defn foo [x] (+ (* (- x 3) 2) (- x 3)))

foo受到约束:

(fn [x] (+ (* (- x 3) 2) (- x 3)))

如何从foo访问该功能?我的目的是改变函数中的某些东西并返回一个新函数。

1 个答案:

答案 0 :(得分:5)

如果您想使用Var foo中存储的函数值,只需编写foo,例如:

(def foo2 (comp - foo))
(foo 4) ;;=> 3
(foo2 4) ;;=> -3

Vars没有特殊的deref表示法:只需使用他们的名字,他们就可以解析为绑定值。 函数不是你改变的东西,但你可以用其他函数来构建函数,比如上面的函数。