Clojure中的函数组成和部分组成

时间:2014-10-24 11:18:01

标签: clojure

我有一个嵌套的矢量矢量,比如[[1 2 3] [4 5 6] [7 8 9]],我想增加每个子矢量的值,然后找到每个子矢量的最大值。我使用的配方是:

(map (comp (partial apply max) (partial map inc)) [[1 2 3] [4 5 6] [7 8 9]])

有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

要实现目标,您可以将max / inc合并,并将一个电话保存到map

(map (comp inc #(apply max %)) [[1 2 3] [4 5 6] [7 8 9]])
;; => (4 7 10)

但这只是一个微小的改进,实际上颠倒了操作的顺序。但是可能更具可读性。

答案 1 :(得分:1)

基于@xsc's answer,但尊重操作顺序......

(map #(->> % (map inc) (apply max)) [[1 2 3] [4 5 6] [7 8 9]])
;(4 7 10)
相关问题