私はscalaz のチュートリアルを見ました。
このリンクから、私は次のコードを理解しています:
scala> def sum[A](xs: List[A])(implicit m: Monoid[A]): A = xs.foldLeft(m.mzero)(m.mappend)
sum: [A](xs: List[A])(implicit m: Monoid[A])A
scala> implicit val intMonoid = IntMonoid
intMonoid: IntMonoid.type = IntMonoid$@3387dfac
scala> sum(List(1, 2, 3, 4))
res9: Int = 10
しかし、私は次のコードを理解していません:
scala> def sum[A: Monoid](xs: List[A]): A = {
val m = implicitly[Monoid[A]]
xs.foldLeft(m.mzero)(m.mappend)
}
sum: [A](xs: List[A])(implicit evidence$1: Monoid[A])A
scala> sum(List(1, 2, 3, 4))
res10: Int = 10
を考えるとList(1, 2, 3, 4)
、A
ですInt
。
では、どうやって と を in にできるA
のMonoid
でしょA
うInt
かdef sum[A: Monoid](xs: List[A]): A = {
?
ありがとうございました