Invariant Applicative
Формальное определение
Инвариантный Applicative поддерживает операции xunit0
, xunit1
и т.д.,
которые "оборачивают" тип в инвариантный функтор.
InvariantApplicative
расширяет InvariantFunctor
.
Используется для получения класса типов продуктов и типов значений.
Определение в виде кода на Scala
trait InvariantFunctor[F[_]]:
extension [A](fa: F[A]) def xmap[B](f: A => B, g: B => A): F[B]
trait InvariantApplicative[F[_]] extends InvariantFunctor[F]:
def xunit0[A](a: => A): F[A]
extension [A](fa: => F[A])
def xunit1[B](f: A => B, g: B => A): F[B] =
fa.xmap(f, g)
Ссылки: