Slide 56
Slide 56 text
【抽象的なモナド】MonadTransformer
➢ F[_], G[_] がモナドのとき、F[G[_]] もモナドになる...とは限らない
➢ G[_] が特定の条件を満たす(具体的な)モナドの場合は F[G[_]] もモナドになる
○ F[Option[A]], F[Either[E, A]], F[Cont[R, A]] など
○ 特定の条件: F[G[_]] を G[F[_]] にできる
➢ 条件を満たす(具体的な)モナドに対応するデータ型を定義し、
それもまたモナドのインスタンスにしてしまおう
○ OptionT[F, A], EitherT[F, E, A], ContT[F, R, A] など