gpt4 book ai didi

scala - 什么是 scalaz 中的 Cohoist?

转载 作者:行者123 更新时间:2023-12-04 21:30:13 26 4
gpt4 key购买 nike

scalaz定义一个 Cohoist :

  trait Cohoist[F[_[_], _]] extends ComonadTrans[F] {
def cohoist[M[_], N[_]: Comonad](f: M ~> N): F[M, ?] ~> F[N, ?]
}

哪里 ComonadTrans被定义为:
 trait ComonadTrans[F[_[_], _]] {
def lower[G[_]: Cobind, A](a: F[G, A]): G[A]
}

问题是如何对待这种类型?有人可以用几句话来解释或举个例子吗?

最佳答案

ComonadTrans对理解来说并不重要 cohoist ,这类似于 map 的高阶版本。
map可以通过翻转论证来重新表述,如

[A, B](A => B) => (F[A] => F[B])

换句话说,它将函数提升为 F . ~>只是
F ~> G
[A]F[A] => G[A]

这样你就可以扩展 cohoist 的签名
[M[_], N[_]: Comonad]([A]M[A] => N[A]) => ([A]F[M, A] => F[N, A])

(这两个 A 不能组合并拉到初始 tparam 列表中;除了说“那行不通”之外,我不想在这里详细介绍)

所以就像map一样,它将一个函数(M到N更改器(mutator))提升到F ,制作“F of M”到“F of N”变压器。

关于scala - 什么是 scalaz 中的 Cohoist?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54160426/

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