私は次の方法を持っています:
firstRightOrLefts :: [Either b a] -> Either [b] a
firstRightOrLefts eithers =
case partitionEithers eithers of
(_, (x : _)) -> Right x
(xs, _) -> Left xs
私を悩ませているのは醜いパターンマッチングであり、このメソッドを書くためのより慣用的な方法があるかどうか疑問に思っていました. アイデアは、Eithers を返すことができる一連の計算があり、最初の結果またはすべてのエラー メッセージを取得したいということです。間違ったデータ構造を使用している可能性があります。おそらく Writer モナドがこのタスクにより適しているでしょう。現時点ではよくわかりません。どんな助けにも乾杯!