Подтвердить что ты не робот

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

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

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

Служит ли это в любом месте в стандартных библиотеках?

4b9b3361

Ответ 1

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

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

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

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