モナディック関数の合成 LYAHFGG: 第13章でモナド則を紹介したとき、<=< 関数は関数合成によく似ているど、普通の関数 a -> b ではなくて、a -> m b みたいなモナディック関数に作用するのだよと言いました。 これも飛ばしてたみたいだ。 Kleisli Scalaz には Kleisli と呼ばれる A => M[B] という型の関数に対する特殊なラッパーがある: sealed trait Kleisli[M[+_], -A, +B] { self => def run(a: A): M[B] ... /** alias for `andThen` */ def >=>[C](k: Kleisli[M, B, C])(implicit b: Bind[M]): Kleisli[M, A, C] = kleisli((a: A) => b.bind(this(a))(k(_