関数型プログラミングに関する次の文を考える-圏論について、特定の推論に-私たちは見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)
...
私の質問は、圏論からの応用におけるマップ関数は何をするのかということです。
と:map2
のみapply
を使用して、数行後に定義されunit
ます。
def map[A,B](fa: F[A])(f: A => B): F[B] = apply(unit(f))(fa)
あなたは、の定義にプラグインできるmap
にmap2
し、それによって定義取得map2
にのみ依存しているapply
とはunit
:
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
定義するために必要とされないmap2
からapply
とunit
、それ自体が由来することができるためapply
とunit
。
他の場合と同じように動作しmap
ますFunctor
(すべてApplicative
が自動的にであるためFunctor
):とを指定するF[A]
とf: A => B
、が生成されますF[B]
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加