бифунктора, у которого есть инстансы функтора и контрафуктора для соотв-х дырок?
type Cov = [F[_, _]] =>> [A] =>> [B] =>> F[A, B]
type Con = [F[_, _]] =>> [B] =>> [A] =>> F[A, B]
given ProfuctorFromCovariContra[A, B, F[_, _]] as Profunctor[F] given (covary: Functor[Cov[F][A]], contra: Contravariant[Con[F][B]]) {
def dimap[A, A2, B, B2](f: A2 => A)(g: B => B2)(p: F[A, B]): F[A2, B2] =
{
val x = contra.contramap(f)(p)
val xx = covary.fmap(g)(x)
xx
}
}
Ты и в скала 2 такой инстанс можешь определить
Обсуждают сегодня