给出以下关于函数式编程的说明--特别是关于范畴理论的推理-- 我们看到,map函数在Applicative中。
trait Applicative[F[_]] extends Functor[F] {
def map2[A,B,C](fa: F[A], fb: F[B])(f: (A, B) => C): F[C] =
apply(map(fa)(f.curried))(fb)
...我的问题是:,应用范畴理论中的映射函数是什么?
发布于 2018-07-20 12:50:45
它只在map2之后定义了几行,只使用apply和unit
def map[A,B](fa: F[A])(f: A => B): F[B] = apply(unit(f))(fa)您可以将map的定义插入到map2中,从而获得仅依赖于apply和unit的map2定义。
def map2[X, Y, Z](x: F[X], y: F[Y])(f: (X, Y) => Z): F[Z] =
apply(apply(unit((x: X) => (y: Y) => f(x, y)))(x))(y)因此,map不需要从apply和unit定义map2,因为它本身可以从apply和unit派生。
它的行为就像任何其他Functor的Functor(因为每个Applicative都自动是一个Functor):给定一个F[A]和一个f: A => B,它会生成一个F[B]。
https://stackoverflow.com/questions/51442856
复制相似问题