Slide 27
Slide 27 text
実装都合を押し込められた F[_] の合成
type DBIO[A] = (DBSession, ExecutionContext) => Future[A]
type S3IO[A] = S3Client => Future[A]
// 引数をフラットに列挙してしまうパターン
type DBS3IO_1[A] = (DBSession, ExecutionContext, S3Client) => Future[A]
// 関係ない引数を使えないようにするパターン
type DBS3IO_2[A] = Either[(DBSession, ExecutionContext), S3Client] => Future[A]
// いっそ引数を汎用的にした自前の IO 型にしてしまうパターン
abstract class Context
type MyIO[A] = Context => Future[A]