Либо, попробуй, и валидация в Scala
Меня смущает Either
, Try
, а также Validation
из scalaz
, Кажется, никто из них не делает то, что мне нужно. Что мне нужно, это простая монада Result[E, R]
где E
это тип ошибки и R
тип результата
Either
не подходит, потому что это не монада (но прогнозы есть) и непредвзятые.Try
не подходит, так как его тип ошибкиThrowable
и это не совсем монадаValidation
это не монада вообще.
Что ты предлагаешь? Должен ли я написать это Result
типа сам?
1 ответ
Решение
Если вы хотите использовать Scalaz (и это звучит так, как вы), \/
(обычно произносится как "дизъюнкция") - это именно то, что вы ищете - монадическая, правосторонняя версия Either
,
Он также включает в себя множество других приятных вещей, которые вы не получите с правильной проекцией Either
в стандартной библиотеке (1.right
синтаксис, комбинаторы, как +++
, преобразователи из Validation
, так далее.).