#scala #scala-cats #cats-effect
#scala #scala-кошки #кошки-эффект
Вопрос:
Например, у меня есть список IO с некоторыми ошибками.
def print(x: Int) = {
if(x == 3 || x == 4)
IO.raiseError(new RuntimeException("error " x))
else
IO(println(x))
}
List.range(1,6).map(print)
Если я использую traverse
List.range(1,6).map(print)
Он печатает только 1,2, и я могу получить одну ошибку «ошибка 3»
Я хотел бы напечатать все числа
1
2
5
и получить список всех ошибок
List("error 3", "error 4")
Как я могу это сделать?
Ответ №1:
Решение:
List.range(1, 6).traverse(print(_).attempt)
.map(_.collect{case Left(x) => x})