所以,如果我理解这一点,当我写道:
(defn foo [x] (+ (* (- x 3) 2) (- x 3)))
foo
受到约束:
(fn [x] (+ (* (- x 3) 2) (- x 3)))
如何从foo
访问该功能?我的目的是改变函数中的某些东西并返回一个新函数。
答案 0 :(得分:5)
如果您想使用Var foo
中存储的函数值,只需编写foo
,例如:
(def foo2 (comp - foo))
(foo 4) ;;=> 3
(foo2 4) ;;=> -3
Vars没有特殊的deref表示法:只需使用他们的名字,他们就可以解析为绑定值。 函数不是你改变的东西,但你可以用其他函数来构建函数,比如上面的函数。