зафиксирован (к тому же поскольку это моноид в категории эндофункторов). Т.е. используя байнд я не могу перемещаться между Maybe и Either например?
class Monad m where
(>>=) :: m a -> ( a -> m b) -> m b
чисто формально я не вижу проблемы в том, чтобы распаковать допустим Maybe a и вернуть Either a b.
да. всё так
Стикер
Можно где-нибудь почитать об этом? Я бы хотел посмотреть на каноническое решение.
maybeToEither :: Maybe a -> b -> Either a b maybeToEither ma b = case ma of Nothing -> Right b Just a -> Left a
ну или вот такое, если типы более традиционным способом расставить https://hackage.haskell.org/package/errors-2.3.0/docs/Control-Error-Util.html#v:note
Обсуждают сегодня