G
Size: a a a
G
AZ
p
∅ч
∅ч
AZ
AZ
∅ч
AZ
AL
p
G
λ
AZ
Т8
DS
trait ~>[F[_], G[_]] {
def apply[A](f: F[A]): G[A]
}
val headNat = new NonEmptyList ~> Id {
def apply[A](f: NonEmptyList[A]): Id[A] = f.head
}
headNat(NonEmptyList(1, Nil)) // выведет 1
val optionToList: Option ~> List = ???
val headOptionNat: List ~> Option = ???
// и т.д. и т.п.
AL
p
p
AL