[data.monoid.generator cleanup
ekmett@gmail.com**20090325073324] {
hunk ./Data/Monoid/Generator.hs 10
- , mtraverse_
- , mfor_
- , mmapM_
- , mforM_
- , mconcatMap
+ , m_traverse_
+ , m_for_
+ , m_mapM_
+ , m_forM_
+ , m_concatMap
+ , m_and
+ , m_or
+ , m_any
+ , m_all
hunk ./Data/Monoid/Generator.hs 68
-mtraverse_ :: (Generator c, Applicative f) => (Elem c -> f b) -> c -> f ()
-mtraverse_ f = getTraversal . mapReduce f
+m_traverse_ :: (Generator c, Applicative f) => (Elem c -> f b) -> c -> f ()
+m_traverse_ f = getTraversal . mapReduce f
hunk ./Data/Monoid/Generator.hs 71
-mfor_ :: (Generator c, Applicative f) => c -> (Elem c -> f b) -> f ()
-mfor_ = flip mtraverse_
+m_for_ :: (Generator c, Applicative f) => c -> (Elem c -> f b) -> f ()
+m_for_ = flip m_traverse_
hunk ./Data/Monoid/Generator.hs 74
-mmapM_ :: (Generator c, Monad m) => (Elem c -> m b) -> c -> m ()
-mmapM_ f = getAction . mapReduce f
+m_mapM_ :: (Generator c, Monad m) => (Elem c -> m b) -> c -> m ()
+m_mapM_ f = getAction . mapReduce f
hunk ./Data/Monoid/Generator.hs 77
-mforM_ :: (Generator c, Monad m) => c -> (Elem c -> m b) -> m ()
-mforM_ = flip mmapM_
+m_forM_ :: (Generator c, Monad m) => c -> (Elem c -> m b) -> m ()
+m_forM_ = flip m_mapM_
hunk ./Data/Monoid/Generator.hs 80
-mconcatMap :: Generator c => (Elem c -> [b]) -> c -> [b]
-mconcatMap = mapReduce
+m_concatMap :: Generator c => (Elem c -> [b]) -> c -> [b]
+m_concatMap = mapReduce
+
+m_and :: (Generator c, Elem c ~ Bool) => c -> Bool
+m_and = getAll . reduce
+
+m_or :: (Generator c, Elem c ~ Bool) => c -> Bool
+m_or = getAny . reduce
+
+m_any :: Generator c => (Elem c -> Bool) -> c -> Bool
+m_any f = getAny . mapReduce f
+
+m_all :: Generator c => (Elem c -> Bool) -> c -> Bool
+m_all f = getAll . mapReduce f
hunk ./Data/Monoid/Ord.hs 1
+{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-}
hunk ./Data/Monoid/Ord.hs 16
- ( module Data.Monoid
+ ( module Data.Monoid.Reducer
hunk ./Data/Monoid/Ord.hs 27
-import Data.Monoid (Monoid, mappend, mempty)
+import Data.Monoid.Reducer (Reducer, unit, Monoid, mappend, mempty)
hunk ./Data/Monoid/Ord.hs 37
+instance (Ord a, Bounded a) => Reducer a (Max a) where
+ unit = Max
+
hunk ./Data/Monoid/Ord.hs 47
+instance (Ord a, Bounded a) => Reducer a (Min a) where
+ unit = Min
+
hunk ./Data/Monoid/Ord.hs 57
+instance Ord a => Reducer (Maybe a) (MaxPriority a) where
+ unit = MaxPriority
+
+instance Ord a => Reducer a (MaxPriority a) where
+ unit = MaxPriority . Just
+
hunk ./Data/Monoid/Ord.hs 76
+instance Ord a => Reducer (Maybe a) (MinPriority a) where
+ unit = MinPriority
+
+instance Ord a => Reducer a (MinPriority a) where
+ unit = MinPriority . Just
+
hunk ./Data/Monoid/Reducer.hs 8
-import Data.Monoid (Monoid, mempty, mappend)
+import Data.Monoid
hunk ./Data/Monoid/Reducer.hs 50
+instance Reducer Bool Any where
+ unit = Any
+
+instance Reducer Bool All where
+ unit = All
+
+instance Reducer (a -> a) (Endo a) where
+ unit = Endo
+
+instance Monoid a => Reducer a (Dual a) where
+ unit = Dual
+
+instance Num a => Reducer a (Sum a) where
+ unit = Sum
+
+instance Num a => Reducer a (Product a) where
+ unit = Product
+
+instance Reducer (Maybe a) (First a) where
+ unit = First
+
+instance Reducer a (First a) where
+ unit = First . Just
+
+instance Reducer (Maybe a) (Last a) where
+ unit = Last
+
+instance Reducer a (Last a) where
+ unit = Last . Just
+
hunk ./dist/doc/html/monoids/Data-Monoid-Generator.html 387
->mtraverse_m_traverse_mfor_m_for_mmapM_m_mapM_mforM_m_forM_mconcatMapm_concatMapSource
m_all :: Generator c => (Elem c -> Bool) -> c -> Bool | module Data.Monoid.Reducer | | | Documentation | | module Data.Monoid.Reducer | (Ord a, Bounded a) => Reducer a (Max a) (Ord a, Bounded a) => Reducer a (Min a) | Ord a => Reducer a (MaxPriority a) | | Ord a => Reducer (Maybe a) (MaxPriority a) | Ord a => Reducer a (MinPriority a) a) | Ord a => Reducer (Maybe a) (MinPriority Bool All | Reducer Bool All | Reducer Bool Any | Reducer Bool Any | Reducer a (Last a) | Reducer a (First a) | Num a => Reducer a (Product a) | Num a => Reducer a (Sum a) | Monoid a => Reducer a (Dual a) | ReducerOrd a => Reducer a (MinPriority a) | Ord a => Reducer a (MaxPriority a) | (Ord a, Bounded a) => Reducer a (Min a) | (Ord a, Bounded a) => Reducer a (Max a) | Reducer (Maybe a) (Last a) | Reducer (Maybe a) (Last a) | Reducer (Maybe a) (First a) | Reducer (Maybe a) (First a) | Ord a => Reducer (Maybe a) (MinPriority a) | Ord a => Reducer (Maybe a) (MinPriority a) | Ord a => Reducer (Maybe a) (MaxPriority a) | Ord a => Reducer (Maybe a) (MaxPriority a) | | Reducer (a -> a) (Endo a) | Reducer (a -> a) (Endo a) | Data.Monoid.GeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.GeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.GeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.GeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.GeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.GeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.GeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.GeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.GeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.GeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.GeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.GeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.GeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.GeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.GeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.GeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.GeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.GeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.GeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.GeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.Ord, Data.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.FingerTree, Data.Monoid.Map, Data.Monoid.IntMap, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Ord, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.FingerTree, Data.Monoid.Map, Data.Monoid.IntMap, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.GeneratormconcatMap | Data.Monoid.Generator | Data.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.Ord, Data.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.FingerTree, Data.Monoid.Map, Data.Monoid.IntMap, Data.Monoid.Generator, Data.Monoid.Lexical.Words mforM_ | Data.Monoid.Generator | mfor_ | Data.Monoid.Generator | Data.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Ord, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.FingerTree, Data.Monoid.Map, Data.Monoid.IntMap, Data.Monoid.Generator, Data.Monoid.Lexical.WordsmmapM_Data.Monoid.Generator | Data.Monoid.Ord, Data.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.FingerTree, Data.Monoid.Map, Data.Monoid.IntMap, Data.Monoid.Generator, Data.Monoid.Lexical.Words | Data.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Ord, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.FingerTree, Data.Monoid.Map, Data.Monoid.IntMap, Data.Monoid.Generator, Data.Monoid.Lexical.Wordsmtraverse_mzeroData.Monoid.Monad | m_all | mzerom_andData.Monoid.MonadData.Monoid.Generator m_any | Data.Monoid.Generator | m_concatMap | Data.Monoid.Generator | m_forM_ | Data.Monoid.Generator | m_for_ | Data.Monoid.Generator | m_mapM_ | Data.Monoid.Generator | m_or | Data.Monoid.Generator | m_traverse_ | Data.Monoid.Generator | Data.Monoid.GeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.GeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.Words, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.FingerTree, Data.Monoid.Map, Data.Monoid.IntMap, Data.Monoid.Lexical.Words, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Ord, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.FingerTree, Data.Monoid.Map, Data.Monoid.IntMap, Data.Monoid.Lexical.WordsData.Monoid.GeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.WordsData.Monoid.GeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.Generator, Data.Monoid.Lexical.Words, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.FingerTree, Data.Monoid.Map, Data.Monoid.IntMap, Data.Monoid.Lexical.Words, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Ord, Data.Monoid.Monad, Data.Monoid.Applicative, Data.Monoid.FingerTree, Data.Monoid.Map, Data.Monoid.IntMap, Data.Monoid.Lexical.Words , 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
+ , m_traverse_
+ , m_for_
+ , m_mapM_
+ , m_forM_
+ , m_concatMap
+ , m_and
+ , m_or
+ , m_any
+ , m_all
+ ) 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
hunk ./dist/doc/html/monoids/src/Data-Monoid-Generator.html 47
-instance Generator Strict.ByteString where
- type Elem Strict.ByteString = Word8
- mapTo f = Strict.foldl' (\a -> snoc a . f)
+ mapReduce f = mapTo f mempty
+ mapTo f m = mappend m . mapReduce f
+ mapFrom f = mappend . mapReduce f
hunk ./dist/doc/html/monoids/src/Data-Monoid-Generator.html 51
-instance Generator Lazy.ByteString where
- type Elem Lazy.ByteString = Elem Strict.ByteString
- mapReduce f = fold . parMap rwhnf (mapReduce f) . Lazy.toChunks
+instance Generator Strict.ByteString where
+ type Elem Strict.ByteString = Word8
+ mapTo f = Strict.foldl' (\a -> snoc a . f)
hunk ./dist/doc/html/monoids/src/Data-Monoid-Generator.html 55
-instance Generator Text where
- type Elem Text = Char
- mapTo f = Text.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
hunk ./dist/doc/html/monoids/src/Data-Monoid-Generator.html 59
-instance Generator [c] where
- type Elem [c] = c
- mapReduce f = foldMap (unit . f)
+instance Generator Text where
+ type Elem Text = Char
+ mapTo f = Text.foldl' (\a -> snoc a . f)
hunk ./dist/doc/html/monoids/src/Data-Monoid-Generator.html 63
-
-
-
-
-
-
-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
+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
+
+m_traverse_ :: (Generator c, Applicative f) => (Elem c -> f b) -> c -> f ()
+m_traverse_ f = getTraversal . mapReduce f
+
+m_for_ :: (Generator c, Applicative f) => c -> (Elem c -> f b) -> f ()
+m_for_ = flip m_traverse_
+
+m_mapM_ :: (Generator c, Monad m) => (Elem c -> m b) -> c -> m ()
+m_mapM_ f = getAction . mapReduce f
+
+m_forM_ :: (Generator c, Monad m) => c -> (Elem c -> m b) -> m ()
+m_forM_ = flip m_mapM_
+
+m_concatMap :: Generator c => (Elem c -> [b]) -> c -> [b]
+m_concatMap = mapReduce
+
+m_and :: (Generator c, Elem c ~ Bool) => c -> Bool
+m_and = getAll . reduce
+
+m_or :: (Generator c, Elem c ~ Bool) => c -> Bool
+m_or = getAny . reduce
+
+m_any :: Generator c => (Elem c -> Bool) -> c -> Bool
+m_any f = getAny . mapReduce f
+
+m_all :: Generator c => (Elem c -> Bool) -> c -> Bool
+m_all f = getAll . mapReduce f
hunk ./dist/doc/html/monoids/src/Data-Monoid-Ord.html 9
-
-
-
-
-
-
-
-
-
-
-
-
-
-module Data.Monoid.Ord
- ( module Data.Monoid
-
- , Max(Max,getMax)
-
- , Min(Min,getMin)
-
- , MaxPriority(MaxPriority,getMaxPriority)
-
- , MinPriority(MinPriority,getMinPriority)
- ) where
-
-import Data.Monoid (Monoid, mappend, mempty)
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+module Data.Monoid.Ord
+ ( module Data.Monoid.Reducer
+
+ , Max(Max,getMax)
+
+ , Min(Min,getMin)
+
+ , MaxPriority(MaxPriority,getMaxPriority)
+
+ , MinPriority(MinPriority,getMinPriority)
+ ) where
+
+import Data.Monoid.Reducer (Reducer, unit, Monoid, mappend, mempty)
hunk ./dist/doc/html/monoids/src/Data-Monoid-Ord.html 37
-
-newtype Max a = Max { getMax :: a } deriving (Eq,Ord,Show,Read,Bounded)
-
-instance (Ord a, Bounded a) => Monoid (Max a) where
- mempty = Max minBound
- mappend = max
-
-
-newtype Min a = Min { getMin :: a } deriving (Eq,Ord,Show,Read,Bounded)
-
-instance (Ord a, Bounded a) => Monoid (Min a) where
- mempty = Min maxBound
- mappend = min
+
+
+newtype Max a = Max { getMax :: a } deriving (Eq,Ord,Show,Read,Bounded)
+
+instance (Ord a, Bounded a) => Monoid (Max a) where
+ mempty = Max minBound
+ mappend = max
+
+instance (Ord a, Bounded a) => Reducer a (Max a) where
+ unit = Max
+
+
+newtype Min a = Min { getMin :: a } deriving (Eq,Ord,Show,Read,Bounded)
hunk ./dist/doc/html/monoids/src/Data-Monoid-Ord.html 51
-
-newtype MaxPriority a = MaxPriority { getMaxPriority :: Maybe a } deriving (Eq,Ord,Show,Read)
-
-instance Ord a => Monoid (MaxPriority a) where
- mempty = MaxPriority Nothing
- mappend = max
+instance (Ord a, Bounded a) => Monoid (Min a) where
+ mempty = Min maxBound
+ mappend = min
+
+instance (Ord a, Bounded a) => Reducer a (Min a) where
+ unit = Min
hunk ./dist/doc/html/monoids/src/Data-Monoid-Ord.html 58
-
-newtype MinPriority a = MinPriority { getMinPriority :: Maybe a } deriving (Eq,Show,Read)
+
+newtype MaxPriority a = MaxPriority { getMaxPriority :: Maybe a } deriving (Eq,Ord,Show,Read)
hunk ./dist/doc/html/monoids/src/Data-Monoid-Ord.html 61
-instance Ord a => Ord (MinPriority a) where
- MinPriority Nothing `compare` MinPriority Nothing = EQ
- MinPriority Nothing `compare` _ = GT
- _ `compare` MinPriority Nothing = LT
- MinPriority (Just a) `compare` MinPriority (Just b) = a `compare` b
-
-instance Ord a => Monoid (MinPriority a) where
- mempty = MinPriority Nothing
- mappend = min
+instance Ord a => Monoid (MaxPriority a) where
+ mempty = MaxPriority Nothing
+ mappend = max
+
+instance Ord a => Reducer (Maybe a) (MaxPriority a) where
+ unit = MaxPriority
+
+instance Ord a => Reducer a (MaxPriority a) where
+ unit = MaxPriority . Just
+
+
+newtype MinPriority a = MinPriority { getMinPriority :: Maybe a } deriving (Eq,Show,Read)
+
+instance Ord a => Ord (MinPriority a) where
+ MinPriority Nothing `compare` MinPriority Nothing = EQ
+ MinPriority Nothing `compare` _ = GT
+ _ `compare` MinPriority Nothing = LT
+ MinPriority (Just a) `compare` MinPriority (Just b) = a `compare` b
+
+instance Ord a => Monoid (MinPriority a) where
+ mempty = MinPriority Nothing
+ mappend = min
+
+instance Ord a => Reducer (Maybe a) (MinPriority a) where
+ unit = MinPriority
+
+instance Ord a => Reducer a (MinPriority a) where
+ unit = MinPriority . Just
hunk ./dist/doc/html/monoids/src/Data-Monoid-Reducer.html 16
-import Data.Monoid (Monoid, mempty, mappend)
+import Data.Monoid
hunk ./dist/doc/html/monoids/src/Data-Monoid-Reducer.html 57
+
+instance Reducer Bool Any where
+ unit = Any
+
+instance Reducer Bool All where
+ unit = All
+
+instance Reducer (a -> a) (Endo a) where
+ unit = Endo
+
+instance Monoid a => Reducer a (Dual a) where
+ unit = Dual
+
+instance Num a => Reducer a (Sum a) where
+ unit = Sum
+
+instance Num a => Reducer a (Product a) where
+ unit = Product
+
+instance Reducer (Maybe a) (First a) where
+ unit = First
+
+instance Reducer a (First a) where
+ unit = First . Just
+
+instance Reducer (Maybe a) (Last a) where
+ unit = Last
+
+instance Reducer a (Last a) where
+ unit = Last . Just
}
|