packages feed

monoid-transformer 0.0.3 → 0.0.4

raw patch · 6 files changed

+32/−6 lines, 6 filesdep +semigroups

Dependencies added: semigroups

Files

monoid-transformer.cabal view
@@ -1,5 +1,5 @@ Name:             monoid-transformer-Version:          0.0.3+Version:          0.0.4 License:          BSD3 License-File:     LICENSE Author:           Henning Thielemann <haskell@henning-thielemann.de>@@ -25,11 +25,13 @@ Source-Repository this   type:     darcs   location: http://code.haskell.org/~thielema/monoid/-  tag:      0.0.3+  tag:      0.0.4   Library-  Build-Depends: base >= 1 && <5+  Build-Depends:+    semigroups >=0.1 && <1.0,+    base >= 1 && <5    GHC-Options:      -Wall   Hs-Source-Dirs:   src
src/Data/Monoid/Applicative.hs view
@@ -4,12 +4,16 @@  import Control.Applicative (Applicative, pure, liftA2, ) import Data.Monoid (Monoid, mempty, mappend, )+import Data.Semigroup (Semigroup, (<>), )  {- | Sequence applicative functors and combine their functorial results with 'mappend'. -} newtype T f a = Cons {run :: f a} ++instance (Applicative f, Semigroup a) => Semigroup (T f a) where+   Cons x <> Cons y = Cons $ liftA2 (<>) x y  instance (Applicative f, Monoid a) => Monoid (T f a) where    mempty = Cons $ pure mempty
src/Data/Monoid/Monad.hs view
@@ -4,6 +4,7 @@  import Control.Monad (liftM2, ) import Data.Monoid (Monoid, mempty, mappend, )+import Data.Semigroup (Semigroup, (<>), )  {- | Sequence actions and combine their monadic results with 'mappend'.@@ -12,6 +13,9 @@ -} newtype T m a = Cons {run :: m a} ++instance (Monad m, Semigroup a) => Semigroup (T m a) where+   Cons x <> Cons y = Cons $ liftM2 (<>) x y  instance (Monad m, Monoid a) => Monoid (T m a) where    mempty = Cons $ return mempty
src/Data/Monoid/MonadicEndo.hs view
@@ -1,6 +1,7 @@ module Data.Monoid.MonadicEndo where  import Data.Monoid (Monoid, mempty, mappend, )+import Data.Semigroup (Semigroup, (<>), )  {- | Like Data.Monoid.Endo but with monadic result.@@ -11,8 +12,11 @@ newtype T m a = Cons {run :: a -> m a}  -instance Monad m => Monoid (T m a) where-   mempty = Cons return-   mappend (Cons x) (Cons y) =+instance Monad m => Semigroup (T m a) where+   Cons x <> Cons y =       Cons $ (x =<<) . y --      Cons $ x <=< y++instance Monad m => Monoid (T m a) where+   mempty = Cons return+   mappend = (<>)
src/Data/Monoid/Reader.hs view
@@ -2,6 +2,7 @@  import qualified Data.Monoid.Transformer as MonoidTrans import Data.Monoid (Monoid, mempty, mappend, )+import Data.Semigroup (Semigroup, (<>), ) import Data.Functor (Functor, fmap, ) import Data.Function (const, ($), (.), ) @@ -15,6 +16,9 @@  pure :: a -> T r a pure = Cons . const++instance Semigroup a => Semigroup (T r a) where+   Cons x <> Cons y = Cons $ \r -> x r <> y r  instance Monoid a => Monoid (T r a) where    mempty = MonoidTrans.lift mempty
src/Data/Monoid/State.hs view
@@ -2,6 +2,7 @@  import qualified Data.Monoid.Transformer as MonoidTrans import Data.Monoid (Monoid, mempty, mappend, )+import Data.Semigroup (Semigroup, (<>), ) import Data.Functor (Functor, fmap, ) import Data.Function (const, ($), (.), ) import Data.Tuple (fst, snd, )@@ -38,6 +39,13 @@ modify :: Monoid a => (s -> s) -> T s a modify f = Cons $ \s -> (mempty, f s) ++instance Semigroup a => Semigroup (T s a) where+   Cons x <> Cons y =+      Cons $ \s0 ->+         let (xr,s1) = x s0+             (yr,s2) = y s1+         in  (xr<>yr, s2)  instance Monoid a => Monoid (T s a) where    mempty = MonoidTrans.lift mempty