usar la ortografía par de Writer
todo el tiempo, pero siempre tiene que crear una instancia de mí mismo:¿La instancia `Monad ((,) w)` es estándar?
instance (Monoid w) => Monad ((,) w) where
return x = (mempty, x)
~(w,x) >>= f = let (w', y) = f x in (w `mappend` w', y)
¿Este viven en cualquier lugar de las librerías estándar?
Ahora que lo mencionas, es curioso que 'Control.Monad.Instances' contenga la instancia' Functor' para '(()) a)' pero no una instancia 'Monad', a pesar de tener el lector anónimo' ((->) e) 'y error anónimo' E e'. –
Vea también http://stackoverflow.com/questions/4211150/why-isnt-implemented-with-control-monad-instances-by-default –
@McCann: ¿Cómo implementa una instancia de Monad para '((,) a) ' Por ejemplo, no tengo ni idea de cómo implementar 'return'. –