[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_and :: (Generator c, Elem c ~ Bool) => c -> BoolSource
m_or :: (Generator c, Elem c ~ Bool) => c -> BoolSource
m_any :: Generator c => (Elem c -> Bool) -> c -> BoolSource
(Ord a, Bounded a) => Reducer a (Max a)Ord a => Reducer a (MinPriority 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.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.WordsmmapM_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_mzeromzerom_andData.Monoid.MonadData.Monoid.GeneratorData.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 - -importData.Word(Word8) -importData.Text(Text) -importData.Foldable(fold,foldMap) -importqualifiedData.TextasText -importqualifiedData.ByteStringasStrict -importqualifiedData.ByteString.LazyasLazy -importControl.Parallel.Strategies -importData.Monoid -importData.Monoid.Applicative -importData.Monoid.Monad - --- minimal definition mapReduce or affixMapReduce -classGeneratorcwhere -typeElemc::* -mapReduce::(e`Reducer`m)=>(Elemc->e)->c->m -mapTo::(e`Reducer`m)=>(Elemc->e)->m->c->m -mapFrom::(e`Reducer`m)=>(Elemc->e)->c->m->m - -mapReducef=mapTofmempty -mapTofm=mappendm.mapReducef -mapFromf=mappend.mapReducef +,m_traverse_ +,m_for_ +,m_mapM_ +,m_forM_ +,m_concatMap +,m_and +,m_or +,m_any +,m_all +)where + +importData.Word(Word8) +importData.Text(Text) +importData.Foldable(fold,foldMap) +importqualifiedData.TextasText +importqualifiedData.ByteStringasStrict +importqualifiedData.ByteString.LazyasLazy +importControl.Parallel.Strategies +importData.Monoid +importData.Monoid.Applicative +importData.Monoid.Monad + +-- minimal definition mapReduce or affixMapReduce +classGeneratorcwhere +typeElemc::* +mapReduce::(e`Reducer`m)=>(Elemc->e)->c->m +mapTo::(e`Reducer`m)=>(Elemc->e)->m->c->m +mapFrom::(e`Reducer`m)=>(Elemc->e)->c->m->m hunk ./dist/doc/html/monoids/src/Data-Monoid-Generator.html 47 -instanceGeneratorStrict.ByteStringwhere -typeElemStrict.ByteString=Word8 -mapTof=Strict.foldl'(\a->snoca.f) +mapReducef=mapTofmempty +mapTofm=mappendm.mapReducef +mapFromf=mappend.mapReducef hunk ./dist/doc/html/monoids/src/Data-Monoid-Generator.html 51 -instanceGeneratorLazy.ByteStringwhere -typeElemLazy.ByteString=ElemStrict.ByteString -mapReducef=fold.parMaprwhnf(mapReducef).Lazy.toChunks +instanceGeneratorStrict.ByteStringwhere +typeElemStrict.ByteString=Word8 +mapTof=Strict.foldl'(\a->snoca.f) hunk ./dist/doc/html/monoids/src/Data-Monoid-Generator.html 55 -instanceGeneratorTextwhere -typeElemText=Char -mapTof=Text.foldl'(\a->snoca.f) +instanceGeneratorLazy.ByteStringwhere +typeElemLazy.ByteString=ElemStrict.ByteString +mapReducef=fold.parMaprwhnf(mapReducef).Lazy.toChunks hunk ./dist/doc/html/monoids/src/Data-Monoid-Generator.html 59 -instanceGenerator[c]where -typeElem[c]=c -mapReducef=foldMap(unit.f) +instanceGeneratorTextwhere +typeElemText=Char +mapTof=Text.foldl'(\a->snoca.f) hunk ./dist/doc/html/monoids/src/Data-Monoid-Generator.html 63 -{-# SPECIALIZE reduce :: (Word8 `Reducer` m) => Strict.ByteString -> m #-} -{-# SPECIALIZE reduce :: (Word8 `Reducer` m) => Lazy.ByteString -> m #-} -{-# SPECIALIZE reduce :: (Char `Reducer` m) => Text -> m #-} --- These aren't happy, but should work -{-- RULES "reduce/fold" reduce = fold --} -{-- RULES "mapReduce/foldMap" mapReduce = foldMap --} -reduce::(Generatorc,Elemc`Reducer`m)=>c->m -reduce=mapReduceid - -mtraverse_::(Generatorc,Applicativef)=>(Elemc->fb)->c->f() -mtraverse_f=getTraversal.mapReducef - -mfor_::(Generatorc,Applicativef)=>c->(Elemc->fb)->f() -mfor_=flipmtraverse_ - -mmapM_::(Generatorc,Monadm)=>(Elemc->mb)->c->m() -mmapM_f=getAction.mapReducef - -mforM_::(Generatorc,Monadm)=>c->(Elemc->mb)->m() -mforM_=flipmmapM_ - -mconcatMap::Generatorc=>(Elemc->[b])->c->[b] -mconcatMap=mapReduce +instanceGenerator[c]where +typeElem[c]=c +mapReducef=foldMap(unit.f) + +{-# SPECIALIZE reduce :: (Word8 `Reducer` m) => Strict.ByteString -> m #-} +{-# SPECIALIZE reduce :: (Word8 `Reducer` m) => Lazy.ByteString -> m #-} +{-# SPECIALIZE reduce :: (Char `Reducer` m) => Text -> m #-} +-- These aren't happy, but should work +{-- RULES "reduce/fold" reduce = fold --} +{-- RULES "mapReduce/foldMap" mapReduce = foldMap --} +reduce::(Generatorc,Elemc`Reducer`m)=>c->m +reduce=mapReduceid + +m_traverse_::(Generatorc,Applicativef)=>(Elemc->fb)->c->f() +m_traverse_f=getTraversal.mapReducef + +m_for_::(Generatorc,Applicativef)=>c->(Elemc->fb)->f() +m_for_=flipm_traverse_ + +m_mapM_::(Generatorc,Monadm)=>(Elemc->mb)->c->m() +m_mapM_f=getAction.mapReducef + +m_forM_::(Generatorc,Monadm)=>c->(Elemc->mb)->m() +m_forM_=flipm_mapM_ + +m_concatMap::Generatorc=>(Elemc->[b])->c->[b] +m_concatMap=mapReduce + +m_and::(Generatorc,Elemc~Bool)=>c->Bool +m_and=getAll.reduce + +m_or::(Generatorc,Elemc~Bool)=>c->Bool +m_or=getAny.reduce + +m_any::Generatorc=>(Elemc->Bool)->c->Bool +m_anyf=getAny.mapReducef + +m_all::Generatorc=>(Elemc->Bool)->c->Bool +m_allf=getAll.mapReducef hunk ./dist/doc/html/monoids/src/Data-Monoid-Ord.html 9 -
-----------------------------------------------------------------------------
----- |
----- Module      :  Data.Monoid.Ord
----- Copyright   :  (c) Edward Kmett 2009
----- License     :  BSD-style
----- Maintainer  :  libraries@haskell.org
----- Stability   :  provisional
----- Portability :  portable
-----
----- Some 'Monoid' instances that should probably be in "Data.Monoid".
-----
--------------------------------------------------------------------------------
-
-module Data.Monoid.Ord 
-    ( module Data.Monoid
-    -- * Max
-    , Max(Max,getMax)
-    -- * Min
-    , Min(Min,getMin)
-    -- * MaxPriority: Max semigroup w/ added bottom
-    , MaxPriority(MaxPriority,getMaxPriority)
-    -- * MinPriority: Min semigroup w/ added top
-    , MinPriority(MinPriority,getMinPriority)
-    ) where
-
-import Data.Monoid (Monoid, mappend, mempty)
-
+
{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-}
+-----------------------------------------------------------------------------
+---- |
+---- Module      :  Data.Monoid.Ord
+---- Copyright   :  (c) Edward Kmett 2009
+---- License     :  BSD-style
+---- Maintainer  :  libraries@haskell.org
+---- Stability   :  provisional
+---- Portability :  portable
+----
+---- Some 'Monoid' instances that should probably be in "Data.Monoid".
+----
+-------------------------------------------------------------------------------
+
+module Data.Monoid.Ord 
+    ( module Data.Monoid.Reducer
+    -- * Max
+    , Max(Max,getMax)
+    -- * Min
+    , Min(Min,getMin)
+    -- * MaxPriority: Max semigroup w/ added bottom
+    , MaxPriority(MaxPriority,getMaxPriority)
+    -- * MinPriority: Min semigroup w/ added top
+    , MinPriority(MinPriority,getMinPriority)
+    ) where
+
+import Data.Monoid.Reducer (Reducer, unit, Monoid, mappend, mempty)
hunk ./dist/doc/html/monoids/src/Data-Monoid-Ord.html 37
--- | The 'Monoid' @('max','minBound')@
-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
-
--- | The 'Monoid' given by @('min','maxBound')@
-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
+
+-- | The 'Monoid' @('max','minBound')@
+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
+
+-- | The 'Monoid' given by @('min','maxBound')@
+newtype Min a = Min { getMin :: a } deriving (Eq,Ord,Show,Read,Bounded)
hunk ./dist/doc/html/monoids/src/Data-Monoid-Ord.html 51
--- | The 'Monoid' @('max','Nothing')@ over @'Maybe' a@ where 'Nothing' is the bottom element
-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
--- | The 'Monoid' @('min','Nothing')@ over @'Maybe' a@ where 'Nothing' is the top element
-newtype MinPriority a = MinPriority { getMinPriority :: Maybe a } deriving (Eq,Show,Read)
+-- | The 'Monoid' @('max','Nothing')@ over @'Maybe' a@ where 'Nothing' is the bottom element
+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
+
+-- | The 'Monoid' @('min','Nothing')@ over @'Maybe' a@ where 'Nothing' is the top element
+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
}
m_all :: Generator c => (Elem c -> Bool) -> c -> Boolmodule Data.Monoid.Reducer
Documentation
module Data.Monoid.Reducer
(Ord a, Bounded a) => Reducer a (Min a)
Ord a => Reducer a (MaxPriority a)
Ord a => Reducer (Maybe a) (MaxPriority 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)
mconcatMap
mforM_
mfor_
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
m_all
m_any
m_concatMap
m_forM_
m_for_
m_mapM_
m_or
m_traverse_