Может кто-нибудь объяснить странную конструкцию структурного типа, вложенного в дженерики:
implicit def Function1Functor[R]: Functor[({type λ[α]=(R) => α})#λ] =
new Functor[({type λ[α]=(R) => α})#λ] ....
Этот пример взят из библиотеки Scalaz: Functor.scala
Зачем там нужна эта конструкция? Не проще было бы написать:
implicit def Function1Functor[R,A]: Functor[R =>A]
or
implicit def Function1Functor[R,A]: Functor[Function1[R,A]]