3

So if I understand this correctly, when I write:

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

foo gets bound to:

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

How do I access the function from foo? My intention is to change something in the function and return a new function.

4

1 回答 1

5

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

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

Vars 没有特殊的 deref 表示法:只需使用它们的名称,它们就会被解析为它们的绑定值。函数不是你改变的东西,但你可以从其他函数中构建函数,就像上面一样。

于 2013-03-24T10:06:52.843 回答