[documentation ekmett@gmail.com**20090327051247] { hunk ./dist/doc/html/monoids/Data-Monoid-Generator.html 261 +> IntSetGenerator (IntMap v)GeneratorMeasured v m => Generator (Set a)Generator (Values (IntMap v))Generator (Values (Map k v))Generator (Keys (IntMap v)) (FingerTree v m) (Keys (Map k v))Generator (Map k v)Measured v e => Generator (FingerTree v e)
newtype Keys c Source
Constructors
Keys c
show/hide Instances
newtype Values c Source
dataUnion a
Constructors
Values c
show/hide Instances
Source
show/hide Instances
data Union k a Source
show/hide Instances
Ord k => Monoid (Union k a)
Ord k => Reducer (Map k a) (Union k a)
getUnion)where - -importData.Word(Word8) -importData.Text(Text) -importData.Foldable(fold,foldMap) -importqualifiedData.TextasText -importqualifiedData.ByteStringasStrict -importqualifiedData.ByteString.LazyasLazy -importControl.Parallel.Strategies -importData.Monoid.Reducer -importData.Sequence(Seq) -importData.FingerTree(Measured,FingerTree) - --- 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 - -instanceGeneratorStrict.ByteStringwhere -typeElemStrict.ByteString=Word8 -mapTof=Strict.foldl'(\a->snoca.f) +,Keys(Keys) +,Values(Values) +)where + +importData.Word(Word8) +importData.Text(Text) +importData.Foldable(fold,foldMap) +importqualifiedData.TextasText +importqualifiedData.ByteStringasStrict +-- import qualified Data.ByteString.Char8 as Strict8 +importqualifiedData.ByteString.LazyasLazy +-- import qualified Data.ByteString.Lazy.Char8 as Lazy8 +importqualifiedData.SequenceasSeq +importData.Sequence(Seq) +importqualifiedData.SetasSet +importData.Set(Set) +importqualifiedData.IntSetasIntSet +importData.IntSet(IntSet) +importqualifiedData.IntMapasIntMap +importData.IntMap(IntMap) +importqualifiedData.MapasMap +importData.Map(Map) + +importControl.Parallel.Strategies +importData.Monoid.Reducer +importData.Sequence(Seq) +importData.FingerTree(Measured,FingerTree) hunk ./dist/doc/html/monoids/src/Data-Monoid-Generator.html 46 -instanceGeneratorLazy.ByteStringwhere -typeElemLazy.ByteString=ElemStrict.ByteString -mapReducef=fold.parMaprwhnf(mapReducef).Lazy.toChunks - -instanceGeneratorTextwhere -typeElemText=Char -mapTof=Text.foldl'(\a->snoca.f) - -instanceGenerator[c]where -typeElem[c]=c -mapReducef=foldMap(unit.f) - -instanceMeasuredvm=>Generator(FingerTreevm)where -typeElem(FingerTreevm)=m -mapReducef=foldMap(unit.f) - -instanceGenerator(Seqc)where -typeElem(Seqc)=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 +-- 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 + +instanceGeneratorStrict.ByteStringwhere +typeElemStrict.ByteString=Word8 +mapTof=Strict.foldl'(\a->snoca.f) + +instanceGeneratorLazy.ByteStringwhere +typeElemLazy.ByteString=Word8 +mapReducef=fold.parMaprwhnf(mapReducef).Lazy.toChunks + +{- +instance Generator Strict8.ByteString where + type Elem Strict8.ByteString = Char + mapTo f = Strict8.foldl' (\a -> snoc a . f) + +instance Generator Lazy.ByteString where + type Elem Lazy8.ByteString = Char + mapReduce f = fold . parMap rwhnf (mapReduce f) . Lazy8.toChunks +-} + +instanceGeneratorTextwhere +typeElemText=Char +mapTof=Text.foldl'(\a->snoca.f) + +instanceGenerator[c]where +typeElem[c]=c +mapReducef=foldMap(unit.f) + +instanceMeasuredve=>Generator(FingerTreeve)where +typeElem(FingerTreeve)=e +mapReducef=foldMap(unit.f) + +instanceGenerator(Seqc)where +typeElem(Seqc)=c +mapReducef=foldMap(unit.f) + +instanceGeneratorIntSetwhere +typeElemIntSet=Int +mapReducef=mapReducef.IntSet.toList + +instanceGenerator(Seta)where +typeElem(Seta)=a +mapReducef=mapReducef.Set.toList + +instanceGenerator(IntMapv)where +typeElem(IntMapv)=(Int,v) +mapReducef=mapReducef.IntMap.toList + +instanceGenerator(Mapkv)where +typeElem(Mapkv)=(k,v) +mapReducef=mapReducef.Map.toList + +newtypeKeysc=Keys{getKeys::c} + +instanceGenerator(Keys(IntMapv))where +typeElem(Keys(IntMapv))=Int +mapReducef=mapReducef.IntMap.keys.getKeys + +instanceGenerator(Keys(Mapkv))where +typeElem(Keys(Mapkv))=k +mapReducef=mapReducef.Map.keys.getKeys + +newtypeValuesc=Values{getValues::c} + +instanceGenerator(Values(IntMapv))where +typeElem(Values(IntMapv))=v +mapReducef=mapReducef.IntMap.elems.getValues + +instanceGenerator(Values(Mapkv))where +typeElem(Values(Mapkv))=v +mapReducef=mapReducef.Map.elems.getValues + +{-# SPECIALIZE reduce :: (Word8 `Reducer` m) => Strict.ByteString -> m #-} +{-# SPECIALIZE reduce :: (Word8 `Reducer` m) => Lazy.ByteString -> m #-} +{-- SPECIALIZE reduce :: (Char `Reducer` m) => Strict8.ByteString -> m --} +{-- SPECIALIZE reduce :: (Char `Reducer` m) => Lazy8.ByteString -> m --} +{-# SPECIALIZE reduce :: (c `Reducer` m) => [c] -> m #-} +{-# SPECIALIZE reduce :: (Generator (FingerTree v e), e `Reducer` m) => FingerTree v e -> m #-} +{-# SPECIALIZE reduce :: (Char `Reducer` m) => Text -> m #-} +{-# SPECIALIZE reduce :: (e `Reducer` m) => Seq e -> m #-} +{-# SPECIALIZE reduce :: (Int `Reducer` m) => IntSet -> m #-} +{-# SPECIALIZE reduce :: (a `Reducer` m) => Set a -> m #-} +{-# SPECIALIZE reduce :: ((Int,v) `Reducer` m) => IntMap v -> m #-} +{-# SPECIALIZE reduce :: ((k,v) `Reducer` m) => Map k v -> m #-} +{-# SPECIALIZE reduce :: (Int `Reducer` m) => Keys (IntMap v) -> m #-} +{-# SPECIALIZE reduce :: (k `Reducer` m) => Keys (Map k v) -> m #-} +{-# SPECIALIZE reduce :: (v `Reducer` m) => Values (IntMap v) -> m #-} +{-# SPECIALIZE reduce :: (v `Reducer` m) => Values (Map k v) -> m #-} +reduce::(Generatorc,Elemc`Reducer`m)=>c->m +reduce=mapReduceid hunk ./dist/doc/html/monoids/src/Data-Monoid-IntMap.html 12 -,Union(getUnion) -,UnionWith(getUnionWith) -)where - -importData.Monoid.Reducer(Reducer,unit,cons,snoc,Monoid,mappend,mempty) -importData.IntMap - -newtypeUniona=Union{getUnion::IntMapa} - -instanceMonoid(Uniona)where -mempty=Unionempty -Uniona`mappend`Unionb=Union(a`union`b) - -instanceReducer(IntMapa)(Uniona)where -unit=Union - --- only needs m to be a semigroup, but Haskell doesn't have a semigroup class - -newtypeUnionWithm=UnionWith{getUnionWith::IntMapm} - -instanceMonoidm=>Monoid(UnionWithm)where -mempty=UnionWithempty -UnionWitha`mappend`UnionWithb=UnionWith(unionWithmappendab) - -instanceMonoidm=>Reducer(IntMapm)(UnionWithm)where -unit=UnionWith +,UnionWith(getUnionWith) +)where + +importData.Monoid.Reducer(Reducer,unit,cons,snoc,Monoid,mappend,mempty) +importData.IntMap + +newtypeUnionWithm=UnionWith{getUnionWith::IntMapm} + +instanceMonoidm=>Monoid(UnionWithm)where +mempty=UnionWithempty +UnionWitha`mappend`UnionWithb=UnionWith(unionWithmappendab) + +instanceMonoidm=>Reducer(IntMapm)(UnionWithm)where +unit=UnionWith hunk ./dist/doc/html/monoids/src/Data-Monoid-Map.html 12 -,Union(getUnion) -,UnionWith(getUnionWith) -)where - -importPrelude(Ord) -importData.Monoid.Reducer(Reducer,unit,cons,snoc,Monoid,mempty,mappend) -importData.Map - -newtypeUnionka=Union{getUnion::Mapka} - -instanceOrdk=>Monoid(Unionka)where -mempty=Unionempty -Uniona`mappend`Unionb=Union(a`union`b) - -instanceOrdk=>Reducer(Mapka)(Unionka)where -unit=Union - --- only needs m to be a semigroup, but Haskell doesn't have a semigroup class - -newtypeUnionWithkm=UnionWith{getUnionWith::Mapkm} - -instance(Ordk,Monoidm)=>Monoid(UnionWithkm)where -mempty=UnionWithempty -UnionWitha`mappend`UnionWithb=UnionWith(unionWithmappendab) - -instance(Ordk,Monoidm)=>Reducer(Mapkm)(UnionWithkm)where -unit=UnionWith +,UnionWith(getUnionWith) +)where + +importPrelude(Ord) +importData.Monoid.Reducer(Reducer,unit,cons,snoc,Monoid,mempty,mappend) +importData.Map + +-- only needs m to be a semigroup, but Haskell doesn't have a semigroup class + +newtypeUnionWithkm=UnionWith{getUnionWith::Mapkm} + +instance(Ordk,Monoidm)=>Monoid(UnionWithkm)where +mempty=UnionWithempty +UnionWitha`mappend`UnionWithb=UnionWith(unionWithmappendab) + +instance(Ordk,Monoidm)=>Reducer(Mapkm)(UnionWithkm)where +unit=UnionWith hunk ./dist/doc/html/monoids/src/Data-Monoid-Multiplicative.html 21 -importData.Foldable -importqualifiedData.SequenceasSeq -importData.Sequence(Seq) - -classMultiplicativeMonoidmwhere -one::m -times::m->m->m - -class(MultiplicativeMonoidm,Monoidm)=>Seminearringm - -instanceMonoidm=>MultiplicativeMonoid[m]where -one=[mempty] -xss`times`yss=[xs`mappend`ys|xs<-xss,ys<-yss] - -instanceMonoidm=>Seminearring[m] - -instance(Measuredvm,Monoidm)=>MultiplicativeMonoid(FingerTreevm)where -one=singletonmempty -xss`times`yss=getSelf$mapReduce(flipfmap'yss.mappend)xss - -instance(Monoidm)=>MultiplicativeMonoid(Seqm)where -one=Seq.singletonmempty -xss`times`yss=getSelf$mapReduce(flipfmapyss.mappend)xss - -instance(Measuredvm,Monoidm)=>Seminearring(FingerTreevm) - -instanceMultiplicativeMonoidm=>MultiplicativeMonoid(Selfm)where -one=Selfone -Selfa`times`Selfb=Self(a`times`b) - -instanceMultiplicativeMonoidm=>MultiplicativeMonoid(FromStringm)where -one=FromStringone -FromStringa`times`FromStringb=FromString(a`times`b) - --- class Absorbing m where isZero :: m -> Bool +importqualifiedData.SequenceasSeq +importData.Sequence(Seq) + +classMultiplicativeMonoidmwhere +one::m +times::m->m->m + +class(MultiplicativeMonoidm,Monoidm)=>Seminearringm + +instanceMonoidm=>MultiplicativeMonoid[m]where +one=[mempty] +xss`times`yss=[xs`mappend`ys|xs<-xss,ys<-yss] + +instanceMonoidm=>Seminearring[m] + +instance(Measuredvm,Monoidm)=>MultiplicativeMonoid(FingerTreevm)where +one=singletonmempty +xss`times`yss=getSelf$mapReduce(flipfmap'yss.mappend)xss + +instance(Monoidm)=>MultiplicativeMonoid(Seqm)where +one=Seq.singletonmempty +xss`times`yss=getSelf$mapReduce(flipfmapyss.mappend)xss + +instance(Measuredvm,Monoidm)=>Seminearring(FingerTreevm) + +instanceMultiplicativeMonoidm=>MultiplicativeMonoid(Selfm)where +one=Selfone +Selfa`times`Selfb=Self(a`times`b) + +instanceMultiplicativeMonoidm=>MultiplicativeMonoid(FromStringm)where +one=FromStringone +FromStringa`times`FromStringb=FromString(a`times`b) + +-- class Absorbing m where isZero :: m -> Bool }
Reducer (IntMap a) (Union a)
Reducer (IntMap a) (Union a)
Ord k => Reducer (Map k a) (Union k a)
Ord k => Reducer (Map k a) (Union k a)
1 (Function)
2 (Function)
Keys
1 (Type/Class)
2 (Data Constructor)
Union
1 (Type/Class)
2 (Type/Class)
Values
1 (Type/Class)
2 (Data Constructor)