Either
は、右向きのScala 2.12を使用して、投影なしで、Option
のように投影/出力ブロックで使用できるようにします。しかし、明らかに、これはflatMap
と一緒に使用するとOption
のように振る舞うには不十分です。スカラのリスト[どちらか一方]のflatMapを使用する
object Main {
def main(args: Array[String]): Unit = {
val nums = List.range(1,10)
println(nums.flatMap(evenOption))
println(nums.flatMap(evenEither)) // fails
}
def evenOption(x: Int): Option[Int] = if (x % 2 == 0) Some(x) else None
def evenEither(x: Int): Either[String, Int] = if (x % 2 == 0) Right(x) else Left("not even")
}
マイ最小限圏論の知識は私がEither
がモナドではないため、これは失敗したと思いますか?あるいは、上記の例をどのように機能させることができますか?
この問題は、TraversableOnceを拡張しないという問題に関連している可能性がありますか? – Mikel