Я смотрю, есть ли стандартный класс типов для би-функтора, который имеет один параметр Contravariant и один параметр Covariant.
пробивание подписи (c -> a) -> (b -> d) -> f a b -> f c d
не приводит к ничему, что соответствует.
В основном в Scala я ищу:
trait CoContraBiFunctor[F[_, _]] {
def ccmap[A, B, C, D](fab: F[A, B])(f: C => A)(g: B => D): F[C, D]
}
implicit val ccFunction: CoContraBiFunctor[Function1] = new CoContraBiFunctor[Function] {
override def ccmap[A, B, C, D](fab: Function[A, B])(f: C => A)(g: B => D): Function[C, D] = new Function[C, D] {
override def apply(c: C): D = g(fab(f(c)))
}
}
У кого-нибудь есть идея?Я определенно не первый человек, который ищет это.