2

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

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

目前这就是我所拥有的:

[(mean dist) (stdev dist)]

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

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

我想更紧凑地做到这一点。如何?

4

1 回答 1

4

使用juxt

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

具有核心功能的更简单示例:

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

评论:在这种情况下,关键优势并不是真正的紧凑性,而是并列两个函​​数的表现力。

现在我知道这juxt是关键,我可以找到相关的问题,例如“有反向映射吗?” . 也就是说,根据我当时(10 分钟前)所知道的情况,其他人不容易被发现,所以我希望这个答案能帮助人们发现这个有时很方便的功能。

于 2013-11-08T02:10:18.000 回答