[Haskell-cafe] monoids induced by Applicative/Alternative/Monad/MonadPlus?
petr.mvd at gmail.com
Tue Aug 20 18:55:19 CEST 2013
are these monoids defined somewhere?
import Control.Applicativeimport Data.Monoid
newtype AppMonoid m a = AppMonoid (m a)instance (Monoid a, Applicative
m) => Monoid (AppMonoid m a) where
mempty = AppMonoid $ pure mempty
mappend (AppMonoid x) (AppMonoid y) = AppMonoid $ mappend <$> x
<*> y-- With the () monoid for `a` this becames the monoid of effects.
newtype AltMonoid m a = AltMonoid (m a)instance Alternative m =>
Monoid (AltMonoid m a) where
mempty = AltMonoid empty
mappend (AltMonoid x) (AltMonoid y) = AltMonoid $ x <|> y
(and similarly for Monad/MonadPlus, until they become subclasses of
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Haskell-Cafe