packages feed

data-transform 0.1.0.1 → 0.1.0.2

raw patch · 2 files changed

+16/−8 lines, 2 filesdep ~base

Dependency ranges changed: base

Files

data-transform.cabal view
@@ -1,5 +1,5 @@ name:                data-transform-version:             0.1.0.1+version:             0.1.0.2 synopsis:            Functions to transform data structures. description:         This library provides a simple way to transform parts of                      complex data structures. It is based on Data.Data.@@ -22,7 +22,7 @@                        MultiParamTypeClasses,                        FunctionalDependencies,                        UndecidableInstances-  build-depends:       base >= 4 && < 5,+  build-depends:       base >= 4.9 && < 5,                        mtl,                        containers   hs-source-dirs:      src
src/Data/Transform/Internal.hs view
@@ -50,6 +50,8 @@ import Data.Data import Data.Monoid +import qualified Data.Semigroup as S+ import Control.Monad import Control.Monad.Writer import Control.Monad.State@@ -86,10 +88,13 @@ mkItemM :: (Monad m, Data a) => (a -> m a) -> EndoMItem m mkItemM = EndoMItem +instance S.Semigroup EndoList where+    Nil        <> b = b+    (Cons x l) <> b = Cons x (l S.<> b)+ instance Monoid EndoList where-    mempty               = Nil-    mappend Nil        b = b-    mappend (Cons x l) b = Cons x (mappend l b)+    mempty  = Nil+    mappend = (S.<>)  instance IsList EndoList where     type Item EndoList = EndoItem@@ -98,10 +103,13 @@         Nil      -> Nothing         Cons f l -> Just (EndoItem f, l) +instance S.Semigroup (EndoListM m) where+    NilM        <> b = b+    (ConsM x l) <> b = ConsM x (l S.<> b)+ instance Monoid (EndoListM m) where-    mempty                = NilM-    mappend NilM        b = b-    mappend (ConsM x l) b = ConsM x (mappend l b)+    mempty  = NilM+    mappend = (S.<>)  instance Monad m => IsList (EndoListM m) where     type Item (EndoListM m) = EndoMItem m