Есть ли у Скалаз что-то, что можно накопить как в ошибках, так и в успехах?

Я начал использовать Scalaz 7 Validation and/or disjunction для обработки списка возможных неудачных операций и управления их результатом.

Есть два хорошо задокументированных случая для такого рода вариантов использования:

1/Вы хотите проверить список условий для чего-то и накопить каждую ошибку, если таковая имеется. Здесь вы всегда идете в конец списка, и в случае какой-либо ошибки у вас будет сбой как глобальный результат. И это аппликативный функтор в действии.

2/Вы хотите выполнить несколько шагов, которые могут завершиться неудачно, и остановиться на первом из них. Здесь у нас есть монада, которая отлично подходит для -понимания Scala.

Итак, у меня есть два других варианта использования, которые относятся к одним и тем же линиям, но, похоже, не подходят для любого прецедентного случая :. Я хочу обработать список шагов, возможно, неудачных, и собрать как результаты ошибок, так и успешных результатов (ex :это список изменений в файлах, ошибки могут возникать, потому что это внешний мир, и успех - это исправление, которое я хочу оставить на потом ).

Разница в двух вариантах использования заключается только в том, что я хочу остановиться раньше (при первой ошибке )или перейти в конец списка.

Хорошо, так что же для этого нужно?

(написание вопроса заставляет меня думать, что это просто foldLeft, не так ли? Я оставлю вопрос здесь для проверки, и если кто-то еще задастся вопросом)

5
задан fanf42 10 August 2012 в 14:39
поделиться