Не говоря уже о all isRight
в качестве хорошего ответа на заданный вопрос, я бы в некоторой степени задал вопрос. Что хорошего в том, чтобы вычислить, как Bool
, все ли значения Either
в списке Right
? Что это позволяет вам делать? Один из ответов заключается в том, что он дает вам право исключать теги Right
из всего списка, рассматривая все как свободные от ошибок.
Более информативным вариантом может быть создание чего-то типа
[Either String Int] -> Either String [Int]
, так что вместо простого True
или False
вы получите все Int
s без тегов или сообщение, связанное с первым надоедливым Left
.
И есть стандартная функция, котораяделает это (и многое другое кроме). Он использует тот факт, что списки представляют собой структуру данных со стандартным шаблоном обхода и что Either String
кодирует понятие вычислений, управляющих ошибками, со стандартными шаблонами распространения сбоев и успешного распространения. Тип уже сделал тяжелую работу. Все, что вам нужно сказать, это ...
sequenceA