【发布时间】:2017-03-07 13:03:57
【问题描述】:
幺半群类型A 的列表或数组也是一个幺半群。现在我想combine 使用cats 的整数数组。
scala> 1 |+| 2
res1: Int = 3
scala> Array(1, 2, 3) |+| Array(1, 2, 3)
<console>:21: error: value |+| is not a member of Array[Int]
Array(1, 2, 3) |+| Array(1, 2, 3)
我想得到Array(2, 4, 6) 作为Array(1, 2, 3) |+| Array(1, 2, 3) 的结果。我该怎么做?
【问题讨论】:
-
这并不是
|+|的真正用途。这意味着是一个追加操作。如果数组大小不同会怎样? -
幺半群类型 A 的列表或数组也是一个幺半群 这是理论上的,但您需要在代码中实际提供
Monoid[Array],例如通过implicit。 -
@MichaelZajac 谢谢。我可能错了。一个幺半群数组可能不是一个幺半群。
-
请注意,Scalaz 中有一个名为
merge的操作完全符合您的要求:github.com/scalaz/scalaz/blob/… 我认为,他们只是还没有将其移植到cats。 -
@Michael 我已经检查过但没有找到 :( 另外,我没有找到
Array的Monoid实例。
标签: arrays scala monoids scala-cats