У меня есть следующий метод:
firstRightOrLefts :: [Either b a] -> Either [b] a
firstRightOrLefts eithers =
case partitionEithers eithers of
(_, (x : _)) -> Right x
(xs, _) -> Left xs
Что меня беспокоит, так это уродливое сопоставление с образцом, и мне было интересно, есть ли более идиоматический способ написать этот метод. Идея состоит в том, что у меня есть куча вычислений, которые могут возвращать оба значения, и я просто хочу получить первый результат или все сообщения об ошибках. Возможно, я использую неправильную структуру данных. Возможно, для этой задачи лучше подойдет монада Writer. Я действительно не уверен на данный момент. Спасибо за любую помощь!