Nig*_*nns 10 haskell functional-programming scala typeclass scala-cats
我正在寻找一个Bi-Functor的标准类型类,它有一个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)))
}
}
Run Code Online (Sandbox Code Playgroud)
有人有想法吗?我绝对不是第一个寻找这个的人.