type の関数がいくつかあるとしますInt => Option[Int]。
def foo(n: Int): Int => Option[Int] = {x => if (x == n) none else x.some}
val f0 = foo(0)
val f1 = foo(1)
>=>次のように構成できます。
val composed: Int => Option[Int] = Kleisli(f0) >=> Kleisli(f1)
リストからすべての関数を作成する必要があるとします。
val fs: List[Int => Option[Int]] = List(0, 1, 2).map(n => foo(n))
私はそれを行うことができmapますreduce:
val composed: Int => Option[Int] = fs.map(f => Kleisli(f)).reduce(_ >=> _)
それ(composed上記)を単純化できますか?