Ich benutze das Paar Rechtschreibung Writer
die ganze Zeit, aber ich selbst immer instanziiert müssen:Ist die `Monad ((,) w)` Instanz irgendwo Standard?
instance (Monoid w) => Monad ((,) w) where
return x = (mempty, x)
~(w,x) >>= f = let (w', y) = f x in (w `mappend` w', y)
Enthält diese in den Standardbibliotheken leben überall?
Nun, da Sie es erwähnen, ist es ziemlich merkwürdig, dass 'Control.Monad.Instances' die' Functor' -Instanz für '((,) a)' 'nicht aber eine' Monad' -Instanz enthält, obwohl der anonyme Leser ' (->) e) 'und anonymer Fehler" Entweder e ". –
Siehe auch http://StackOverflow.com/questions/4211150/why-isnt-implemented-with-control-monad-instances-by-default –
@McCann: Wie implementieren Sie eine Monad-Instanz für '((,) a) '? Zum Beispiel habe ich keine Ahnung, wie man 'return' implementiert. –