Либо, попробуй, и валидация в Scala

Меня смущает Either, Try, а также Validation из scalaz, Кажется, никто из них не делает то, что мне нужно. Что мне нужно, это простая монада Result[E, R] где E это тип ошибки и R тип результата

  • Either не подходит, потому что это не монада (но прогнозы есть) и непредвзятые.
  • Try не подходит, так как его тип ошибки Throwable и это не совсем монада
  • Validation это не монада вообще.

Что ты предлагаешь? Должен ли я написать это Result типа сам?

1 ответ

Решение

Если вы хотите использовать Scalaz (и это звучит так, как вы), \/ (обычно произносится как "дизъюнкция") - это именно то, что вы ищете - монадическая, правосторонняя версия Either,

Он также включает в себя множество других приятных вещей, которые вы не получите с правильной проекцией Either в стандартной библиотеке (1.right синтаксис, комбинаторы, как +++, преобразователи из Validation, так далее.).

Другие вопросы по тегам