アプリカティブ

浅海 智晴

用語

アプリカティブ

用語(英)

applicative

別名

アプリカティブ・ファンクター

別名(英)

applicative functor

定義

アプリカティブ(applicative)は、文脈内の関数と文脈内の値を組み合わせて評価する抽象です。 pureap または mapN などの操作によって、依存関係のない複数の計算を並列的・独立的に合成するスタイルを提供します。

Scala

Catsにおける型クラス Applicative の定義は次のようになります。

trait Applicative[F[_]] extends Apply[F] {
  def pure[A](x: A): F[A]
}

ここで、 Applyap および map2 などの組み合わせ演算を提供し、 Applicative はそれに pure を加えることで値の持ち上げを可能にします。

さらに、 Applicative の代表的なユーティリティとして mapN シンタックスがあります:

import cats.implicits._
(pure(a), pure(b), pure(c)).mapN { (x, y, z) =>
  combine(x, y, z)
}

このようにして、依存しない複数の文脈付き値を同時に処理する記法を簡潔に記述できます。