[auto ekmett@gmail.com**20090329224642] { hunk ./doc/html/monoids/Data-Group-Combinators.html 22 ->monoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of MonoidstoList :: Generator c => c -> [Elem c]
toList :: Generator c => c -> [Elem c]Source
Convert any Generator to a list of its contents +monoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of MonoidsConstructors
forall c . (Generator c, Elem c ~ a) => AnyGenerator c
MonadPlus Free a)Eq a => Eq (Free a)Ord a => Ord (Freemonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoids
Contents
Lempel-Ziv 78 +
Decoding +
Encoding +
QuickCheck Properties +
Lempel-Ziv 78 +Decoding +Encoding +QuickCheck Properties +monoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoids
Contents
Generators +
Generator Transformers +
Combinators +
reduce :: (Generator c, Reducer (Elem c) m) => c -> mreduce :: (Generator c, Reducer (Elem c) m) => c -> mmapReduceWith :: (Generator c, Reducer e m) => (m -> n) -> (Elem c -> e) -> c -> nreduceWith :: (Generator c, Reducer (Elem c) m) => (m -> n) -> c -> nGenerators +
reduce :: (Generator c, Reducer (Elem c) m) => c -> mSource
Generator Transformers +Apply a Reducer directly to the elements of a Generator -Combinators +
reduce :: (Generator c, Reducer (Elem c) m) => c -> mSource
Apply a Reducer directly to the elements of a Generator +
mapReduceWith :: (Generator c, Reducer e m) => (m -> n) -> (Elem c -> e) -> c -> nSource
monoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of MonoidsReducer a (Free a)monoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoids (Index)monoids-0.1.15: Lots of Monoids (Index)monoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of MonoidsData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationAnyGeneratorData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiation, Data.Monoid.Generator.LZ78, Data.Monoid.Generator.Free, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Monoid.Generator.LZ78, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Monoid.Generator.LZ78, Data.Monoid.Generator.Free, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Monoid.Generator.LZ78, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Union, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Generator.Free, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Union, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLEData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiation, Data.Monoid.Generator.LZ78, Data.Monoid.Generator.Free, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Monoid.Generator.LZ78, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLEData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiation, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Generator.Free, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Generator.Free, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Monoid.Generator.LZ78, Data.Monoid.Generator.Free, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Monoid.Generator.LZ78, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLEData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiation, Data.Monoid.Generator.LZ78, Data.Monoid.Generator.Free, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Monoid.Generator.LZ78, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLEData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiation, Data.Monoid.Generator.LZ78, Data.Monoid.Generator.Free, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Monoid.Generator.LZ78, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLEData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiation, Data.Monoid.Generator.LZ78, Data.Monoid.Generator.Free, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Monoid.Generator.LZ78, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Monoid.Generator.LZ78, Data.Monoid.Generator.Free, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Monoid.Generator.LZ78, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Monoid.Generator.LZ78, Data.Monoid.Generator.Free, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Monoid.Generator.LZ78, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLEData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiation, Data.Monoid.Generator.LZ78, Data.Monoid.Generator.Free, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Monoid.Generator.LZ78, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLEData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Union, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Monoid.Ord, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Union, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Monoid.Ord, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiation, Data.Monoid.Generator.LZ78, Data.Monoid.Generator.Free, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Monoid.Generator.LZ78, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Monoid.Generator.LZ78, Data.Monoid.Generator.Free, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Monoid.Generator.LZ78, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLEData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Union, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Monoid.Ord, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Union, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Monoid.Ord, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Union, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Monoid.Ord, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Union, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Monoid.Ord, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiation, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Generator.Free, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Monoid.Generator.LZ78, Data.Monoid.Generator.Free, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Monoid.Generator.LZ78, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Union, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Generator.Free, Data.Monoid.Ord, Data.Ring.Semi.Tropical, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Union, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Ord, Data.Ring.Semi.Tropical, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Generator.Free, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Union, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Generator.Free, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Union, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLEData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiationData.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiation, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Union, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Generator.Free, Data.Monoid.Ord, Data.Ring.Semi.Tropical, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Union, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Ord, Data.Ring.Semi.Tropical, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Monoid.Generator.LZ78, Data.Monoid.Generator.Free, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Monoid.Generator.LZ78, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLE, Data.Monoid.Generator.LZ78, Data.Monoid.Generator.Free, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Monoid.Generator.LZ78, Data.Monoid.Combinators, Data.Monoid.Generator.Free, Data.Monoid.Generator.RLEmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoidsmonoids-0.1.14: Lots of Monoidsmonoids-0.1.15: Lots of Monoids-- * List-Like Reduction -,concatMap -,elem -,filter -,find -,sum -,product -,notElem --- * List-Like Monoid Generation -,repeat -,replicate -,cycle --- * QuickCheck Properties -,prop_replicate_right_distributive -)where - -importPreludehiding(mapM_,any,elem,filter,concatMap,and,or,all,sum,product,notElem,replicate,cycle,repeat) -importControl.Applicative -importData.Monoid.Generator -importData.Monoid.Applicative -importData.Monoid.Self -importData.Monoid.Monad -importTest.QuickCheck - --- | Efficiently 'mapReduce' a 'Generator' using the 'Traversal' monoid. A specialized version of its namesake in "Data.Foldable" -traverse_::(Generatorc,Applicativef)=>(Elemc->fb)->c->f() -traverse_f=getTraversal.mapReducef - --- | flipped 'traverse_' as in "Data.Foldable" -for_::(Generatorc,Applicativef)=>c->(Elemc->fb)->f() -for_=fliptraverse_ - --- | Efficiently 'mapReduce' a 'Generator' using the 'Action' monoid. A specialized version of its namesake from "Data.Foldable" and "Control.Monad" -mapM_::(Generatorc,Monadm)=>(Elemc->mb)->c->m() -mapM_f=getAction.mapReducef - --- | flipped 'mapM_' as in "Data.Foldable" and "Control.Monad" -forM_::(Generatorc,Monadm)=>c->(Elemc->mb)->m() -forM_=flipmapM_ +,toList +-- * List-Like Reduction +,concatMap +,elem +,filter +,find +,sum +,product +,notElem +-- * List-Like Monoid Generation +,repeat +,replicate +,cycle +-- * QuickCheck Properties +,prop_replicate_right_distributive +)where + +importPreludehiding(mapM_,any,elem,filter,concatMap,and,or,all,sum,product,notElem,replicate,cycle,repeat) +importControl.Applicative +importData.Monoid.Generator +importData.Monoid.Applicative +importData.Monoid.Self +importData.Monoid.Monad +importTest.QuickCheck + +-- | Efficiently 'mapReduce' a 'Generator' using the 'Traversal' monoid. A specialized version of its namesake in "Data.Foldable" +traverse_::(Generatorc,Applicativef)=>(Elemc->fb)->c->f() +traverse_=mapReduceWithgetTraversal +{-# INLINE traverse_ #-} + +-- | flipped 'traverse_' as in "Data.Foldable" +for_::(Generatorc,Applicativef)=>c->(Elemc->fb)->f() +for_=fliptraverse_ +{-# INLINE for_ #-} + +-- | Efficiently 'mapReduce' a 'Generator' using the 'Action' monoid. A specialized version of its namesake from "Data.Foldable" and "Control.Monad" +mapM_::(Generatorc,Monadm)=>(Elemc->mb)->c->m() +mapM_=mapReduceWithgetAction +{-# INLINE mapM_ #-} hunk ./doc/html/monoids/src/Data-Monoid-Combinators.html 83 --- | Efficiently 'mapReduce' a 'Generator' using the 'Self' monoid. A specialized version of its namesake from "Data.Foldable" -foldMap::(Monoidm,Generatorc)=>(Elemc->m)->c->m -foldMapf=getSelf.mapReducef - --- | Efficiently 'reduce' a 'Generator' using the 'Self' monoid. A specialized version of its namesake from "Data.Foldable" -fold::(Monoidm,Generatorc,Elemc~m)=>c->m -fold=getSelf.reduce - --- | A further specialization of "foldMap" -concatMap::Generatorc=>(Elemc->[b])->c->[b] -concatMap=foldMap - --- | Efficiently 'reduce' a 'Generator' that contains values of type 'Bool' -and::(Generatorc,Elemc~Bool)=>c->Bool -and=getAll.reduce - --- | Efficiently 'reduce' a 'Generator' that contains values of type 'Bool' -or::(Generatorc,Elemc~Bool)=>c->Bool -or=getAny.reduce +-- | flipped 'mapM_' as in "Data.Foldable" and "Control.Monad" +forM_::(Generatorc,Monadm)=>c->(Elemc->mb)->m() +forM_=flipmapM_ +{-# INLINE forM_ #-} + +-- | Efficiently 'mapReduce' a 'Generator' using the 'Self' monoid. A specialized version of its namesake from "Data.Foldable" +foldMap::(Monoidm,Generatorc)=>(Elemc->m)->c->m +foldMap=mapReduceWithgetSelf +{-# INLINE foldMap #-} + +-- | A further specialization of "foldMap" +concatMap::Generatorc=>(Elemc->[b])->c->[b] +concatMap=foldMap +{-# INLINE concatMap #-} + +-- | Efficiently 'reduce' a 'Generator' using the 'Self' monoid. A specialized version of its namesake from "Data.Foldable" +fold::(Monoidm,Generatorc,Elemc~m)=>c->m +fold=reduceWithgetSelf +{-# INLINE fold #-} hunk ./doc/html/monoids/src/Data-Monoid-Combinators.html 103 --- | Efficiently 'mapReduce' any 'Generator' checking to see if any of its values match the supplied predicate -any::Generatorc=>(Elemc->Bool)->c->Bool -anyf=getAny.mapReducef - --- | Efficiently 'mapReduce' any 'Generator' checking to see if all of its values match the supplied predicate -all::Generatorc=>(Elemc->Bool)->c->Bool -allf=getAll.mapReducef - --- | Efficiently 'mapReduce' any 'Generator' using the 'Sum' 'Monoid' -sum::(Generatorc,Num(Elemc))=>c->Elemc -sum=getSum.reduce - --- | Efficiently 'mapReduce' any 'Generator' using the 'Product' 'Monoid' -product::(Generatorc,Num(Elemc))=>c->Elemc -product=getProduct.reduce - --- | Check to see if 'any' member of the 'Generator' matches the supplied value -elem::(Generatorc,Eq(Elemc))=>Elemc->c->Bool -elem=any.(==) +-- | Convert any 'Generator' to a list of its contents +toList::Generatorc=>c->[Elemc] +toList=reduce +{-# INLINE toList #-} + +-- | Efficiently 'reduce' a 'Generator' that contains values of type 'Bool' +and::(Generatorc,Elemc~Bool)=>c->Bool +and=reduceWithgetAll +{-# INLINE and #-} + +-- | Efficiently 'reduce' a 'Generator' that contains values of type 'Bool' +or::(Generatorc,Elemc~Bool)=>c->Bool +or=reduceWithgetAny +{-# INLINE or #-} + +-- | Efficiently 'mapReduce' any 'Generator' checking to see if any of its values match the supplied predicate +any::Generatorc=>(Elemc->Bool)->c->Bool +any=mapReduceWithgetAny +{-# INLINE any #-} hunk ./doc/html/monoids/src/Data-Monoid-Combinators.html 123 --- | Check to make sure that the supplied value is not a member of the 'Generator' -notElem::(Generatorc,Eq(Elemc))=>Elemc->c->Bool -notElemx=not.elemx - --- | Efficiently 'mapReduce' a subset of the elements in a 'Generator' -filter::(Generatorc,Elemc`Reducer`m)=>(Elemc->Bool)->c->m -filterp=foldMapfwhere -fx|px=unitx -|otherwise=mempty +-- | Efficiently 'mapReduce' any 'Generator' checking to see if all of its values match the supplied predicate +all::Generatorc=>(Elemc->Bool)->c->Bool +all=mapReduceWithgetAll +{-# INLINE all #-} + +-- | Efficiently 'mapReduce' any 'Generator' using the 'Sum' 'Monoid' +sum::(Generatorc,Num(Elemc))=>c->Elemc +sum=reduceWithgetSum +{-# INLINE sum #-} hunk ./doc/html/monoids/src/Data-Monoid-Combinators.html 133 --- | A specialization of 'filter' using the 'First' 'Monoid', analogous to 'Data.List.find' -find::Generatorc=>(Elemc->Bool)->c->Maybe(Elemc) -findp=getFirst.filterp - --- | A generalization of 'Data.List.replicate' to an arbitrary 'Monoid'. Adapted from --- <http://augustss.blogspot.com/2008/07/lost-and-found-if-i-write-108-in.html> -replicate::(Monoidm,Integraln)=>m->n->m -replicatex0y0 -|y0<0=mempty-- error "negative length" -|y0==0=mempty -|otherwise=fx0y0 -where -fxy -|eveny=f(x`mappend`x)(y`quot`2) -|y==1=x -|otherwise=g(x`mappend`x)((y-1)`quot`2)x -gxyz -|eveny=g(x`mappend`x)(y`quot`2)z -|y==1=x`mappend`z -|otherwise=g(x`mappend`x)((y-1)`quot`2)(x`mappend`z) - --- | A generalization of 'Data.List.cycle' to an arbitrary 'Monoid'. May fail to terminate for some values in some monoids. -cycle::Monoidm=>m->m -cyclexs=xs'wherexs'=xs`mappend`xs' - --- | A generalization of 'Data.List.repeat' to an arbitrary 'Monoid'. May fail to terminate for some values in some monoids. -repeat::(e`Reducer`m)=>e->m -repeatx=xswherexs=consxxs - -prop_replicate_right_distributive::(Eqm,Monoidm,Arbitrarym,Integraln)=>m->n->n->Bool -prop_replicate_right_distributivemxy -=replicatem(x+y)==replicatemx`mappend`replicatemy +-- | Efficiently 'mapReduce' any 'Generator' using the 'Product' 'Monoid' +product::(Generatorc,Num(Elemc))=>c->Elemc +product=reduceWithgetProduct +{-# INLINE product #-} + +-- | Check to see if 'any' member of the 'Generator' matches the supplied value +elem::(Generatorc,Eq(Elemc))=>Elemc->c->Bool +elem=any.(==) +{-# INLINE elem #-} + +-- | Check to make sure that the supplied value is not a member of the 'Generator' +notElem::(Generatorc,Eq(Elemc))=>Elemc->c->Bool +notElemx=not.elemx +{-# INLINE notElem #-} + +-- | Efficiently 'mapReduce' a subset of the elements in a 'Generator' +filter::(Generatorc,Elemc`Reducer`m)=>(Elemc->Bool)->c->m +filterp=foldMapfwhere +fx|px=unitx +|otherwise=mempty +{-# INLINE filter #-} + +filterWith::(Generatorc,Elemc`Reducer`m)=>(m->n)->(Elemc->Bool)->c->n +filterWithfp=f.filterp +{-# INLINE filterWith #-} + +-- | A specialization of 'filter' using the 'First' 'Monoid', analogous to 'Data.List.find' +find::Generatorc=>(Elemc->Bool)->c->Maybe(Elemc) +find=filterWithgetFirst +{-# INLINE find #-} + +-- | A generalization of 'Data.List.replicate' to an arbitrary 'Monoid'. Adapted from +-- <http://augustss.blogspot.com/2008/07/lost-and-found-if-i-write-108-in.html> +replicate::(Monoidm,Integraln)=>m->n->m +replicatex0y0 +|y0<0=mempty-- error "negative length" +|y0==0=mempty +|otherwise=fx0y0 +where +fxy +|eveny=f(x`mappend`x)(y`quot`2) +|y==1=x +|otherwise=g(x`mappend`x)((y-1)`quot`2)x +gxyz +|eveny=g(x`mappend`x)(y`quot`2)z +|y==1=x`mappend`z +|otherwise=g(x`mappend`x)((y-1)`quot`2)(x`mappend`z) +{-# INLINE replicate #-} + +-- | A generalization of 'Data.List.cycle' to an arbitrary 'Monoid'. May fail to terminate for some values in some monoids. +cycle::Monoidm=>m->m +cyclexs=xs'wherexs'=xs`mappend`xs' + +-- | A generalization of 'Data.List.repeat' to an arbitrary 'Monoid'. May fail to terminate for some values in some monoids. +repeat::(e`Reducer`m)=>e->m +repeatx=xswherexs=consxxs + +prop_replicate_right_distributive::(Eqm,Monoidm,Arbitrarym,Integraln)=>m->n->n->Bool +prop_replicate_right_distributivemxy +=replicatem(x+y)==replicatemx`mappend`replicatemy hunk ./doc/html/monoids/src/Data-Monoid-Generator-Free.html 25 -,Free-- (AnyGen) +,Free(AnyGenerator) hunk ./doc/html/monoids/src/Data-Monoid-Generator-Free.html 29 -importData.Monoid.Generator -importData.Foldable -importData.Monoid.Reducer -importData.Monoid.Additive -importData.Monoid.Self - -dataFreea -=a`Cons`Freea -|Freea`Snoc`a -|Freea`Plus`Freea -|Unita -|Empty --- | forall c. (Generator c, Elem c ~ a) => AnyGen c - -instanceMonoid(Freea)where -mempty=Empty -mappend=Plus - -instanceReducera(Freea)where -unit=Unit - -snocEmptya=Unita -snocab=Snocab - -consbEmpty=Unitb -consab=Consab +importControl.Monad +importData.Monoid.Generator +importData.Foldable +importData.Monoid.Reducer +importData.Monoid.Additive +importqualifiedData.Monoid.CombinatorsasM +importData.Monoid.Self + +dataFreea +=a`Cons`Freea +|Freea`Snoc`a +|Freea`Plus`Freea +|Unita +|Empty +|forallc.(Generatorc,Elemc~a)=>AnyGeneratorc + +instanceEqa=>Eq(Freea)where +a==b=M.toLista==M.toListb +a/=b=M.toLista==M.toListb + +instanceOrda=>Ord(Freea)where +a<=b=M.toLista<=M.toListb +a>=b=M.toLista>=M.toListb +a<b=M.toLista<M.toListb +a>b=M.toLista>M.toListb +a`compare`b=M.toLista`compare`M.toListb hunk ./doc/html/monoids/src/Data-Monoid-Generator-Free.html 56 -instanceFunctorFreewhere -fmapf(a`Cons`b)=fa`Cons`fmapfb -fmapf(a`Snoc`b)=fmapfa`Snoc`fb -fmapf(a`Plus`b)=fmapfa`Plus`fmapfb -fmapf(Unita)=Unit(fa) -fmap_Empty=Empty --- fmap f (AnyGen c) = mapReduce f c - -instancePointedFreewhere -point=Unit - -instanceMonadFreewhere -return=Unit -a`Cons`b>>=k=ka`Plus`(b>>=k) -a`Snoc`b>>=k=(a>>=k)`Plus`kb -a`Plus`b>>=k=(a>>=k)`Plus`(b>>=k) -Unita>>=k=ka -Empty>>=_=Empty --- AnyGen c >>= k = ... - -instanceFoldableFreewhere -foldMapf(a`Cons`b)=fa`mappend`foldMapfb -foldMapf(a`Snoc`b)=foldMapfa`mappend`fb -foldMapf(a`Plus`b)=foldMapfa`mappend`foldMapfb -foldMapf(Unita)=fa -foldMap_Empty=mempty --- foldMap f (AnyGen c) = getSelf . mapReduce f c - -instanceGenerator(Freea)where -typeElem(Freea)=a -mapReducef(a`Cons`b)=fa`cons`mapReducefb -mapReducef(a`Snoc`b)=mapReducefa`snoc`fb -mapReducef(a`Plus`b)=mapReducefa`plus`mapReducefb -mapReducef(Unita)=unit(fa) -mapReduce_Empty=mempty --- mapReduce f (AnyGen c) = getSelf . mapReduce f c - -mapTofm(a`Cons`b)=m`plus`(fa`cons`mapReducefb) -mapTofm(a`Snoc`b)=mapTofma`snoc`fb -mapTofm(a`Plus`b)=mapTofma`plus`mapReducefb -mapTofm(Unita)=m`snoc`fa -mapTo_mEmpty=m --- mapTo f m (AnyGen c) = getSelf . mapTo f m c - -mapFromf(a`Cons`b)m=fa`cons`mapFromfbm -mapFromf(a`Snoc`b)m=mapFromfa(fb`cons`m) -mapFromf(a`Plus`b)m=mapReducefa`plus`mapFromfbm -mapFromf(Unita)m=fa`cons`m -mapFrom_Emptym=m --- mapFrom f (AnyGen c) m = getSelf . mapFrom f c m +instanceMonoid(Freea)where +mempty=Empty +mappend=Plus + +instanceReducera(Freea)where +unit=Unit + +snocEmptya=Unita +snocab=Snocab + +consbEmpty=Unitb +consab=Consab + +instanceFunctorFreewhere +fmapf(a`Cons`b)=fa`Cons`fmapfb +fmapf(a`Snoc`b)=fmapfa`Snoc`fb +fmapf(a`Plus`b)=fmapfa`Plus`fmapfb +fmapf(Unita)=Unit(fa) +fmap_Empty=Empty +fmapf(AnyGeneratorc)=mapReducefc + +instancePointedFreewhere +point=Unit + +instanceMonadFreewhere +return=Unit +a`Cons`b>>=k=ka`Plus`(b>>=k) +a`Snoc`b>>=k=(a>>=k)`Plus`kb +a`Plus`b>>=k=(a>>=k)`Plus`(b>>=k) +Unita>>=k=ka +Empty>>=_=Empty +AnyGeneratorc>>=k=getSelf(mapReducekc) + +instanceMonadPlusFreewhere +mzero=Empty +mplus=Plus + +instanceFoldableFreewhere +foldMapf(a`Cons`b)=fa`mappend`foldMapfb +foldMapf(a`Snoc`b)=foldMapfa`mappend`fb +foldMapf(a`Plus`b)=foldMapfa`mappend`foldMapfb +foldMapf(Unita)=fa +foldMap_Empty=mempty +foldMapf(AnyGeneratorc)=M.foldMapfc + +instanceGenerator(Freea)where +typeElem(Freea)=a +mapReducef(a`Cons`b)=fa`cons`mapReducefb +mapReducef(a`Snoc`b)=mapReducefa`snoc`fb +mapReducef(a`Plus`b)=mapReducefa`plus`mapReducefb +mapReducef(Unita)=unit(fa) +mapReduce_Empty=mempty +mapReducef(AnyGeneratorc)=mapReducefc + +mapTofm(a`Cons`b)=m`plus`(fa`cons`mapReducefb) +mapTofm(a`Snoc`b)=mapTofma`snoc`fb +mapTofm(a`Plus`b)=mapTofma`plus`mapReducefb +mapTofm(Unita)=m`snoc`fa +mapTo_mEmpty=m +mapTofm(AnyGeneratorc)=mapTofmc + +mapFromf(a`Cons`b)m=fa`cons`mapFromfbm +mapFromf(a`Snoc`b)m=mapFromfa(fb`cons`m) +mapFromf(a`Plus`b)m=mapReducefa`plus`mapFromfbm +mapFromf(Unita)m=fa`cons`m +mapFrom_Emptym=m +mapFromf(AnyGeneratorc)m=mapFromfcm hunk ./doc/html/monoids/src/Data-Monoid-Generator-LZ78.html 34 -,LZ78 -,decode -,encode -,encodeEq -,prop_decode_encode -,prop_decode_encodeEq -)where - -importqualifiedData.SequenceasSeq -importData.Sequence(Seq,(|>)) -importqualifiedData.MapasMap -importData.Map(Map) -importqualifiedData.ListasList -importData.Monoid.Generator -importData.Foldable -importData.Monoid.Self - --- | An LZ78 compressing 'Generator', which supports efficient 'mapReduce' operations - -dataTokena=Tokena{-# UNPACK #-}!Int -deriving(Eq,Ord,Show,Read) - --- after using the Functor instance the encoding may no longer be minimal -instanceFunctorTokenwhere -fmapf(Tokenan)=Token(fa)n +-- * Lempel-Ziv 78 +,LZ78 +-- * Decoding +,decode +-- * Encoding +,encode +,encodeEq +-- * QuickCheck Properties +,prop_decode_encode +,prop_decode_encodeEq +)where + +importqualifiedData.SequenceasSeq +importData.Sequence(Seq,(|>)) +importqualifiedData.MapasMap +importData.Map(Map) +importqualifiedData.ListasList +importData.Monoid.Generator +importData.Foldable +importData.Monoid.Self + +-- | An LZ78 compressing 'Generator', which supports efficient 'mapReduce' operations + +dataTokena=Tokena{-# UNPACK #-}!Int +deriving(Eq,Ord,Show,Read) hunk ./doc/html/monoids/src/Data-Monoid-Generator-LZ78.html 60 -newtypeLZ78a=LZ78{getLZ78::[Tokena]} -deriving(Eq,Ord,Show) - -emptyDict::Monoidm=>Seqm -emptyDict=Seq.singletonmempty - -instanceGenerator(LZ78a)where -typeElem(LZ78a)=a -mapTofm(LZ78xs)=mapTo'fmemptyDictxs +-- after using the Functor instance the encoding may no longer be minimal +instanceFunctorTokenwhere +fmapf(Tokenan)=Token(fa)n + +newtypeLZ78a=LZ78{getLZ78::[Tokena]} +deriving(Eq,Ord,Show) + +emptyDict::Monoidm=>Seqm +emptyDict=Seq.singletonmempty hunk ./doc/html/monoids/src/Data-Monoid-Generator-LZ78.html 70 -instanceFunctorLZ78where -fmapf=LZ78.fmap(fmapf).getLZ78 - -instanceFoldableLZ78where -foldMapf=getSelf.mapReducef -fold=getSelf.reduce - -mapTo'::(e`Reducer`m)=>(a->e)->m->Seqm->[Tokena]->m -mapTo'_m_[]=m -mapTo'fms(Tokencw:ws)=m`mappend`mapTo'fv(s|>v)ws -where -v=Seq.indexsw`mappend`unit(fc) - --- | a type-constrained 'reduce' operation - -decode::LZ78a->[a] -decode=reduce - --- | contruct an LZ78-compressed 'Generator' using a 'Map' internally, requires an instance of Ord. - -encode::Orda=>[a]->LZ78a -encode=LZ78.encode'Map.empty10 - -encode'::Orda=>Map(Tokena)Int->Int->Int->[a]->[Tokena] -encode'__p[c]=[Tokencp] -encode'dfp(c:cs)=lett=TokencpincaseMap.lookuptdof -Justp'->encode'dfp'cs -Nothing->t:encode'(Map.inserttfd)(succf)0cs -encode'___[]=[] - --- | contruct an LZ78-compressed 'Generator' using a list internally, requires an instance of Eq. - -encodeEq::Eqa=>[a]->LZ78a -encodeEq=LZ78.encodeEq'[]10 - -encodeEq'::Eqa=>[(Tokena,Int)]->Int->Int->[a]->[Tokena] -encodeEq'__p[c]=[Tokencp] -encodeEq'dfp(c:cs)=lett=TokencpincaseList.lookuptdof -Justp'->encodeEq'dfp'cs -Nothing->t:encodeEq'((t,f):d)(succf)0cs -encodeEq'___[]=[] - --- | QuickCheck property: decode . encode = id -prop_decode_encode::Orda=>[a]->Bool -prop_decode_encodexs=decode(encodexs)==xs +instanceGenerator(LZ78a)where +typeElem(LZ78a)=a +mapTofm(LZ78xs)=mapTo'fmemptyDictxs + +instanceFunctorLZ78where +fmapf=LZ78.fmap(fmapf).getLZ78 + +instanceFoldableLZ78where +foldMapf=getSelf.mapReducef +fold=getSelf.reduce + +mapTo'::(e`Reducer`m)=>(a->e)->m->Seqm->[Tokena]->m +mapTo'_m_[]=m +mapTo'fms(Tokencw:ws)=m`mappend`mapTo'fv(s|>v)ws +where +v=Seq.indexsw`mappend`unit(fc) + +-- | a type-constrained 'reduce' operation + +decode::LZ78a->[a] +decode=reduce + +-- | contruct an LZ78-compressed 'Generator' using a 'Map' internally, requires an instance of Ord. + +encode::Orda=>[a]->LZ78a +encode=LZ78.encode'Map.empty10 + +encode'::Orda=>Map(Tokena)Int->Int->Int->[a]->[Tokena] +encode'__p[c]=[Tokencp] +encode'dfp(c:cs)=lett=TokencpincaseMap.lookuptdof +Justp'->encode'dfp'cs +Nothing->t:encode'(Map.inserttfd)(succf)0cs +encode'___[]=[] + +-- | contruct an LZ78-compressed 'Generator' using a list internally, requires an instance of Eq. + +encodeEq::Eqa=>[a]->LZ78a +encodeEq=LZ78.encodeEq'[]10 + +encodeEq'::Eqa=>[(Tokena,Int)]->Int->Int->[a]->[Tokena] +encodeEq'__p[c]=[Tokencp] +encodeEq'dfp(c:cs)=lett=TokencpincaseList.lookuptdof +Justp'->encodeEq'dfp'cs +Nothing->t:encodeEq'((t,f):d)(succf)0cs +encodeEq'___[]=[] hunk ./doc/html/monoids/src/Data-Monoid-Generator-LZ78.html 116 --- | QuickCheck property: decode . encodeEq = id -prop_decode_encodeEq::Eqa=>[a]->Bool -prop_decode_encodeEqxs=decode(encodeEqxs)==xs +-- | QuickCheck property: decode . encode = id +prop_decode_encode::Orda=>[a]->Bool +prop_decode_encodexs=decode(encodexs)==xs + +-- | QuickCheck property: decode . encodeEq = id +prop_decode_encodeEq::Eqa=>[a]->Bool +prop_decode_encodeEqxs=decode(encodeEqxs)==xs hunk ./doc/html/monoids/src/Data-Monoid-Generator.html 31 -,Generator -,Elem -,mapReduce -,mapTo -,mapFrom -,reduce -,Keys(Keys,getKeys) -,Values(Values,getValues) -,Char8(Char8,getChar8) -)where - -importData.Array -importData.Word(Word8) -importData.Text(Text) -importData.Foldable(fold,foldMap) -importqualifiedData.TextasText -importqualifiedData.ByteStringasStrict(ByteString,foldl') -importqualifiedData.ByteString.Char8asStrict8(foldl') -importqualifiedData.ByteString.LazyasLazy(ByteString,toChunks) -importqualifiedData.ByteString.Lazy.Char8asLazy8(toChunks) -importqualifiedData.SequenceasSeq -importData.FingerTree(Measured,FingerTree) -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 - --- | minimal definition 'mapReduce' or 'mapTo' -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 - -instanceGeneratorTextwhere -typeElemText=Char -mapTof=Text.foldl'(\a->snoca.f) - -instanceGenerator[c]where -typeElem[c]=c -mapReducef=foldr(cons.f)mempty - -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 - -instanceIxi=>Generator(Arrayie)where -typeElem(Arrayie)=(i,e) -mapReducef=mapReducef.assocs - --- | a 'Generator' transformer that asks only for the keys of an indexed container -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 - -instanceIxi=>Generator(Keys(Arrayie))where -typeElem(Keys(Arrayie))=i -mapReducef=mapReducef.range.bounds.getKeys - --- | a 'Generator' transformer that asks only for the values contained in an indexed container -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 - -instanceIxi=>Generator(Values(Arrayie))where -typeElem(Values(Arrayie))=e -mapReducef=mapReducef.elems.getValues - --- | a 'Generator' transformer that treats 'Word8' as 'Char' --- This lets you use a 'ByteString' as a 'Char' source without going through a 'Monoid' transformer like 'UTF8' -newtypeChar8c=Char8{getChar8::c} - -instanceGenerator(Char8Strict.ByteString)where -typeElem(Char8Strict.ByteString)=Char -mapTofm=Strict8.foldl'(\a->snoca.f)m.getChar8 - -instanceGenerator(Char8Lazy.ByteString)where -typeElem(Char8Lazy.ByteString)=Char -mapReducef=fold.parMaprwhnf(mapReducef.Char8).Lazy8.toChunks.getChar8 - -{-# SPECIALIZE reduce :: (Word8 `Reducer` m) => Strict.ByteString -> m #-} -{-# SPECIALIZE reduce :: (Word8 `Reducer` m) => Lazy.ByteString -> m #-} -{-# SPECIALIZE reduce :: (Char `Reducer` m) => Char8 Strict.ByteString -> m #-} -{-# SPECIALIZE reduce :: (Char `Reducer` m) => Char8 Lazy.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 #-} --- | Apply a 'Reducer' directly to the elements of a 'Generator' -reduce::(Generatorc,Elemc`Reducer`m)=>c->m -reduce=mapReduceid +-- * Generators +,Generator +,Elem +,mapReduce +,mapTo +,mapFrom +-- * Generator Transformers +,Keys(Keys,getKeys) +,Values(Values,getValues) +,Char8(Char8,getChar8) +-- * Combinators +,reduce +,mapReduceWith +,reduceWith +)where + +importData.Array +importData.Word(Word8) +importData.Text(Text) +importData.Foldable(fold,foldMap) +importqualifiedData.TextasText +importqualifiedData.ByteStringasStrict(ByteString,foldl') +importqualifiedData.ByteString.Char8asStrict8(foldl') +importqualifiedData.ByteString.LazyasLazy(ByteString,toChunks) +importqualifiedData.ByteString.Lazy.Char8asLazy8(toChunks) +importqualifiedData.SequenceasSeq +importData.FingerTree(Measured,FingerTree) +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 + +-- | minimal definition 'mapReduce' or 'mapTo' +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 + +instanceGeneratorTextwhere +typeElemText=Char +mapTof=Text.foldl'(\a->snoca.f) + +instanceGenerator[c]where +typeElem[c]=c +mapReducef=foldr(cons.f)mempty + +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 + +instanceIxi=>Generator(Arrayie)where +typeElem(Arrayie)=(i,e) +mapReducef=mapReducef.assocs + +-- | a 'Generator' transformer that asks only for the keys of an indexed container +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 + +instanceIxi=>Generator(Keys(Arrayie))where +typeElem(Keys(Arrayie))=i +mapReducef=mapReducef.range.bounds.getKeys + +-- | a 'Generator' transformer that asks only for the values contained in an indexed container +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 + +instanceIxi=>Generator(Values(Arrayie))where +typeElem(Values(Arrayie))=e +mapReducef=mapReducef.elems.getValues + +-- | a 'Generator' transformer that treats 'Word8' as 'Char' +-- This lets you use a 'ByteString' as a 'Char' source without going through a 'Monoid' transformer like 'UTF8' +newtypeChar8c=Char8{getChar8::c} + +instanceGenerator(Char8Strict.ByteString)where +typeElem(Char8Strict.ByteString)=Char +mapTofm=Strict8.foldl'(\a->snoca.f)m.getChar8 + +instanceGenerator(Char8Lazy.ByteString)where +typeElem(Char8Lazy.ByteString)=Char +mapReducef=fold.parMaprwhnf(mapReducef.Char8).Lazy8.toChunks.getChar8 + +-- | Apply a 'Reducer' directly to the elements of a 'Generator' +reduce::(Generatorc,Elemc`Reducer`m)=>c->m +reduce=mapReduceid +{-# SPECIALIZE reduce :: (Word8 `Reducer` m) => Strict.ByteString -> m #-} +{-# SPECIALIZE reduce :: (Word8 `Reducer` m) => Lazy.ByteString -> m #-} +{-# SPECIALIZE reduce :: (Char `Reducer` m) => Char8 Strict.ByteString -> m #-} +{-# SPECIALIZE reduce :: (Char `Reducer` m) => Char8 Lazy.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 #-} + +mapReduceWith::(Generatorc,e`Reducer`m)=>(m->n)->(Elemc->e)->c->n +mapReduceWithfg=f.mapReduceg +{-# INLINE mapReduceWith #-} + +reduceWith::(Generatorc,Elemc`Reducer`m)=>(m->n)->c->n +reduceWithf=f.reduce +{-# INLINE reduceWith #-} }
reduceWith :: (Generator c, Reducer (Elem c) m) => (m -> n) -> c -> nSource
Reducer a (Free a)
Data.Monoid.Reducer, Data.Monoid.Reducer.Char, Data.Monoid.Lexical.UTF8.Decoder, Data.Monoid.Reducer.With, Data.Monoid.Generator, Data.Monoid.Lexical.SourcePosition, Data.Monoid.Lexical.Words, Data.Monoid.Self, Data.Monoid.Generator.LZ78, Data.Monoid.FromString, Data.Monoid.Categorical, Data.Monoid.Additive, Data.Monoid.Additive.Sugar, Data.Monoid.Generator.Free, Data.Monoid.Multiplicative, Data.Monoid.Multiplicative.Sugar, Data.Ring.Semi.Near, Data.Ring.Semi, Data.Ring.Semi.Ord, Data.Ring.Semi.Tropical, Data.Ring.Sugar, Data.Group, Data.Group.Combinators, Data.Group.Sugar, Data.Ring, Data.Ring.Boolean, Data.Ring.FromNum, Data.Ring.Module, Data.Monoid.Applicative, Data.Monoid.Monad, Data.Monoid.Combinators, Data.Monoid.Generator.RLE, Data.Ring.Module.AutomaticDifferentiation
mapReduceWith
reduceWithtoList