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

Fer*_*net 3 clojure

所以,如果我理解正确,当我写:

(defn foo [x] (+ (* (- x 3) 2) (- x 3)))
Run Code Online (Sandbox Code Playgroud)

foo 受到约束:

(fn [x] (+ (* (- x 3) 2) (- x 3)))
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*ent 5

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

(def foo2 (comp - foo))
(foo 4) ;;=> 3
(foo2 4) ;;=> -3
Run Code Online (Sandbox Code Playgroud)

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