代码之家  ›  专栏  ›  技术社区  ›  hawkeye

从范畴理论看地图在应用中的作用是什么?

  •  0
  • hawkeye  · 技术社区  · 6 年前

    给出了以下关于函数编程的陈述——特别是关于范畴理论的推理- we see 这个 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)
    ...
    

    我的问题是: 从范畴理论看地图在应用中的作用是什么?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Andrey Tyukin    6 年前

    只在后面几行就定义好了 map2 ,仅使用 apply unit :

    def map[A,B](fa: F[A])(f: A => B): F[B] = apply(unit(f))(fa)
    

    您可以插入 map 进入之内 微管相关蛋白2 从而得出 微管相关蛋白2 只依赖于 应用 单元 :

    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)
    

    因此, 地图 不需要定义 微管相关蛋白2 应用 单元 因为它本身可以从 应用 单元 .

    它的行为就像 地图 任何其他 Functor (因为每 Applicative 自动是一个 函数 ):给定 F[A] 和一个 f: A => B 它产生一个 F[B] .