将一个值传递给两个Clojure函数

时间:2013-11-08 02:10:18

标签: clojure

我有一个值要传递给两个函数。我希望在Clojure中有一个干净的方法来做到这一点。

例如,我有一个离散的概率分布,表示为散列图。假设我想将它传递给meanstdev函数(即我的自定义均值和标准差函数)。

目前这就是我所拥有的:

[(mean dist) (stdev dist)]

另一种方式 - 不是真正的改进 - 将是:

((fn [x] [(mean x) (stdev x)]) dist)

我想更紧凑地做这件事。怎么样?

1 个答案:

答案 0 :(得分:4)

使用juxt

((juxt mean stdev) dist)
; [82.03M 3.41M]

核心功能的简单示例:

((juxt inc dec) 2)
; [3 1]

评论:在这种情况下,关键优势并不是真正紧凑,而是与两种功能并置的表现力。

现在我知道juxt是关键,我可以找到相关问题,例如"Is there a reverse-map?"。也就是说,根据我当时(10分钟前)的知识,其他人不容易被发现,所以我希望这个答案可以帮助人们发现这个有时候方便的功能。