Я пытаюсь понять, как работает Generic
(и TypeClass
). Вики файлы github очень скудны по примерам и документации. Есть ли каноническая страница блога/документации, подробно описывающая Generic
и TypeClass
?
В конкретном, в чем разница между этими двумя способами?:
def find1[T](implicit gen: Generic[T]): Generic[T] = gen
def find2[T](implicit gen: Generic[T]): Generic[T] { type Repr = gen.Repr } = gen
дано
object Generic {
type Aux[T, Repr0] = Generic[T] { type Repr = Repr0 }
def apply[T](implicit gen: Generic[T]): Aux[T, gen.Repr] = gen
implicit def materialize[T, R]: Aux[T, R] = macro GenericMacros.materialize[T, R]
}