Я работаю через превосходную Scala с Cats , и я не уверен насчет трансформаторов Monad.В частности, есть пример, который выглядит так:
type ErrorOr[A] = Either[String, A]
type ErrorOrOption[A] = OptionT[ErrorOr, A]
val a = 10.pure[ErrorOrOption] // a: OptionT(Right(Some(10)))
val b = 32.pure[ErrorOrOption] // b: OptionT(Right(Some(32)))
val c = a.flatMap(x => b.map(y => x + y)) // c: OptionT(Right(Some(42)))
Как создать пустую опцию?
// d: OptionT(Right(None))
Как создатьзначение ошибки?
// e: OptionT(Left("A terrible error."))
Правильно ли, что если бы я отобразил эти значения, распространяемое значение было бы левым?
Спасибо.