Что такое практическое использование случай этой функции:Что такое практическое использование для этой функции?
def functionMonoid[A,B](B : Monoid[B]) : Monoid[A => B] =
new Monoid[A => B] {
def op(f : A => B, g : A => B) = a => B.op(f(a) , g(a))
val zero: A => B = a => B.zero
}
Это взято из книги «Функциональное программирование в Scala».
Так
val intAddition = new Monoid[Int] {
def op(a1 : Int, a2 : Int) = a1 + a2
val zero = 0
}
functionMonoid(intAddition)
производит тип: Monoid[A => Int]