Является ли экземпляр Monad ((,) w) `стандартным? - PullRequest
19 голосов
/ 17 ноября 2010

Я все время использую парное написание Writer, но мне всегда приходится создавать себе экземпляр:

instance (Monoid w) => Monad ((,) w) where
    return x = (mempty, x)
    ~(w,x) >>= f = let (w', y) = f x in (w `mappend` w', y)

Живет ли это где-нибудь в стандартных библиотеках?

1 Ответ

8 голосов
/ 17 ноября 2010

Как указано в комментарии camccann, Control.Monad.Instances определяет только экземпляр Functor.

Control.Monad.Applicative определяет экземпляр Applicative.

Пакет transformers и, следовательно, версия 2 и выше mtl пакет, определите функцию-оболочку writer :: (a, w) -> Writer w a.

Но я нигде не нашел экземпляр Monad.

...