猫中Int的半群的意义是什么



在cats文档中,他们展示了Semigroup[Int]的示例:

val list = List(1, 2, 3, 4, 5)
val rightwards = List(1, 2, 3).foldRight(0)(_ |+| _)

因此|+|算子是一个半群组合。如果好的话,这个额外的机器有什么意义+"在这里工作还好吗?半群为Int买了什么,或者可能为任何简单类型买了什么?

Semigroup是一个抽象。关键是你可以把东西抽象出来。

代替

def combineIntList(xs: List[Int]) = xs.foldRight(0)(_ + _)
def combineDoubleList(xs: List[Double]) = xs.foldRight(0d)(_ + _)
def combineStringList(xs: List[String]) = xs.foldRight("")(_ + _)

你写

def combine[A: Monoid](xs: List[A]) = xs.foldRight(Monoid[A].empty)(_ |+| _)

免费(按需付费(电子书Scala with Cats更详细地介绍了的这些概念

最新更新