[added members to Data.Monoid.Generator export list
ekmett@gmail.com**20090325071438] {
hunk ./Data/Monoid/Generator.hs 9
+ , reduce
+ , mtraverse_
+ , mfor_
+ , mmapM_
+ , mforM_
+ , mconcatMap
hunk ./Data/Monoid/Generator.hs 25
-import Data.Monoid.Reducer
hunk ./Data/Monoid/Generator.hs 79
-
-
hunk ./dist/doc/html/monoids/Data-Monoid-Generator.html 354
+>
|
|
|
|
|
|
|
|
|
|
|
|
mconcatMapData.Monoid.Generator | | mforM_ | Data.Monoid.Generator |
mfor_ | Data.Monoid.Generator |
mmapM_Data.Monoid.Generator |
mtraverse_ | Data.Monoid.Generator |
|
reduce | Data.Monoid.Generator |
) where
-
-import Data.Word (Word8)
-import Data.Text (Text)
-import Data.Foldable (fold,foldMap)
-import qualified Data.Text as Text
-import qualified Data.ByteString as Strict
-import qualified Data.ByteString.Lazy as Lazy
-import Control.Parallel.Strategies
-import Data.Monoid
-import Data.Monoid.Reducer
-import Data.Monoid.Applicative
-import Data.Monoid.Monad
-
-
-class Generator c where
- type Elem c :: *
- mapReduce :: (e `Reducer` m) => (Elem c -> e) -> c -> m
- mapTo :: (e `Reducer` m) => (Elem c -> e) -> m -> c -> m
- mapFrom :: (e `Reducer` m) => (Elem c -> e) -> c -> m -> m
-
- mapReduce f = mapTo f mempty
- mapTo f m = mappend m . mapReduce f
- mapFrom f = mappend . mapReduce f
-
-instance Generator Strict.ByteString where
- type Elem Strict.ByteString = Word8
- mapTo f = Strict.foldl' (\a -> snoc a . f)
-
-instance Generator Lazy.ByteString where
- type Elem Lazy.ByteString = Elem Strict.ByteString
- mapReduce f = fold . parMap rwhnf (mapReduce f) . Lazy.toChunks
-
-instance Generator Text where
- type Elem Text = Char
- mapTo f = Text.foldl' (\a -> snoc a . f)
-
-instance Generator [c] where
- type Elem [c] = c
- mapReduce f = foldMap (unit . f)
-
-
-
-
-
-
-
-reduce :: (Generator c, Elem c `Reducer` m) => c -> m
-reduce = mapReduce id
-
-mtraverse_ :: (Generator c, Applicative f) => (Elem c -> f b) -> c -> f ()
-mtraverse_ f = getTraversal . mapReduce f
-
-mfor_ :: (Generator c, Applicative f) => c -> (Elem c -> f b) -> f ()
-mfor_ = flip mtraverse_
-
-mmapM_ :: (Generator c, Monad m) => (Elem c -> m b) -> c -> m ()
-mmapM_ f = getAction . mapReduce f
-
-mforM_ :: (Generator c, Monad m) => c -> (Elem c -> m b) -> m ()
-mforM_ = flip mmapM_
-
-mconcatMap :: Generator c => (Elem c -> [b]) -> c -> [b]
-mconcatMap = mapReduce
-
-
+ , reduce
+ , mtraverse_
+ , mfor_
+ , mmapM_
+ , mforM_
+ , mconcatMap
+ ) where
+
+import Data.Word (Word8)
+import Data.Text (Text)
+import Data.Foldable (fold,foldMap)
+import qualified Data.Text as Text
+import qualified Data.ByteString as Strict
+import qualified Data.ByteString.Lazy as Lazy
+import Control.Parallel.Strategies
+import Data.Monoid
+import Data.Monoid.Applicative
+import Data.Monoid.Monad
+
+
+class Generator c where
+ type Elem c :: *
+ mapReduce :: (e `Reducer` m) => (Elem c -> e) -> c -> m
+ mapTo :: (e `Reducer` m) => (Elem c -> e) -> m -> c -> m
+ mapFrom :: (e `Reducer` m) => (Elem c -> e) -> c -> m -> m
+
+ mapReduce f = mapTo f mempty
+ mapTo f m = mappend m . mapReduce f
+ mapFrom f = mappend . mapReduce f
+
+instance Generator Strict.ByteString where
+ type Elem Strict.ByteString = Word8
+ mapTo f = Strict.foldl' (\a -> snoc a . f)
+
+instance Generator Lazy.ByteString where
+ type Elem Lazy.ByteString = Elem Strict.ByteString
+ mapReduce f = fold . parMap rwhnf (mapReduce f) . Lazy.toChunks
+
+instance Generator Text where
+ type Elem Text = Char
+ mapTo f = Text.foldl' (\a -> snoc a . f)
+
+instance Generator [c] where
+ type Elem [c] = c
+ mapReduce f = foldMap (unit . f)
+
+
+
+
+
+
+
+reduce :: (Generator c, Elem c `Reducer` m) => c -> m
+reduce = mapReduce id
+
+mtraverse_ :: (Generator c, Applicative f) => (Elem c -> f b) -> c -> f ()
+mtraverse_ f = getTraversal . mapReduce f
+
+mfor_ :: (Generator c, Applicative f) => c -> (Elem c -> f b) -> f ()
+mfor_ = flip mtraverse_
+
+mmapM_ :: (Generator c, Monad m) => (Elem c -> m b) -> c -> m ()
+mmapM_ f = getAction . mapReduce f
+
+mforM_ :: (Generator c, Monad m) => c -> (Elem c -> m b) -> m ()
+mforM_ = flip mmapM_
+
+mconcatMap :: Generator c => (Elem c -> [b]) -> c -> [b]
+mconcatMap = mapReduce
}