Dear Haskellers,
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
Applicative?)
Best regards,
Petr
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe