3

私は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 にできるAMonoidでしょAIntdef sum[A: Monoid](xs: List[A]): A = {?

ありがとうございました

4

1 に答える 1