Slide 11
Slide 11 text
例
trait Semigroup[T] {
def append(t1: T, t2: T): T
}
trait Monoid[T] extends Semigroup[T] {
def zero: T
}
def double[T: Semigroup](t: T): T = append(t, t)
def sum[T: Monoid](l: List[T]): T = l.foldLeft(zero)(append)
※
ほぼScala
だけど一部省略した記法になってます
11