you monad learn haskell monads

haskell - learn - list monad



¿La instancia `Monad((,,) w)` es estándar? (1)

Utilizo la ortografía en pares de Writer todo el tiempo, pero siempre tengo que crear una instancia:

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

¿Vive esto en alguna parte en las bibliotecas estándar?


Como mencionó camccann en el comentario, Control.Monad.Instances define solo la instancia de Functor .

Control.Monad.Applicative define la instancia Applicative .

El paquete de transformers , y por lo tanto también la versión 2 y superior del paquete mtl , define un writer :: (a, w) -> Writer wa funciones de envoltura writer :: (a, w) -> Writer wa .

Pero no he encontrado la instancia de Monad ningún lado.