gpt4 book ai didi

scala - Bi 的名称 - 具有一个逆变参数和一个协变参数的仿函数类型类

转载 作者:行者123 更新时间:2023-12-02 20:56:27 26 4
gpt4 key购买 nike

我正在寻找是否有一个双仿函数的标准类型类,它具有一个逆变参数和一个协变参数。

对签名进行打洞(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)))
}
}

有人有想法吗?我绝对不是第一个寻找此内容的人。

最佳答案

这被称为仿函数!这是一个very useful type of bifunctor随处可见(例如 in the construction of lenses )!在 Haskell 中,它可以作为 profunctors 包中的 Data.Profunctor 提供。我不是 Scala 人,但看起来是 available中也是如此。

关于scala - Bi 的名称 - 具有一个逆变参数和一个协变参数的仿函数类型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54682429/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com