【问题标题】:Passing one value to two Clojure functions将一个值传递给两个 Clojure 函数
【发布时间】:2013-11-08 02:10:18
【问题描述】:

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

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

目前这是我所拥有的:

[(mean dist) (stdev dist)]

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

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

我想更紧凑地做到这一点。怎么样?

【问题讨论】:

    标签: clojure


    【解决方案1】:

    使用juxt:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多