【发布时间】:2014-12-02 23:17:24
【问题描述】:
我正在寻找在 Clojure 中可能非常明确的东西(实际上在整个 Lisp 世界中),但我没有足够的经验或文化来走上正确的轨道,而且 Google 也不是很好到目前为止很有帮助。
假设我有三种简单的形式:
(defn add-one [v] (+ v 1))
(defn add-two [v] (+ v 2))
(defn add-three [v] (+ v 3))
为方便起见,它们存储在向量中。在现实世界中,该向量会因上下文而异:
(def operations
[add-one
add-two
add-three])
而且我还有一个初始值:
(def value 42)
现在,我想将该向量中的所有函数应用于该值并获得组合操作的结果:
(loop [ops operations
val value]
(if (empty? ops)
val
(recur (rest ops)
((first ops) val))))
虽然这确实有效,但我很惊讶没有更高级别的表单可以做到这一点。我找遍了整个地方,但找不到任何东西。
【问题讨论】:
标签: clojure functional-programming lisp