[documentation ekmett@gmail.com**20090326234248] { adddir ./dist/doc adddir ./dist/doc/html adddir ./dist/doc/html/monoids adddir ./dist/doc/html/monoids/src addfile ./dist/doc/html/monoids/Data-Group-Sugar.html hunk ./dist/doc/html/monoids/Data-Group-Sugar.html 1 + + +Data.Group.Sugar
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Group.Sugar
Documentation
module Data.Monoid.Additive.Sugar
module Data.Group
(-) :: Group g => g -> g -> gSource
negate :: Group g => g -> gSource
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/Data-Group.html hunk ./dist/doc/html/monoids/Data-Group.html 1 + + +Data.Group
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Group
Documentation
module Data.Monoid.Additive
class Monoid a => Group a whereSource
Methods
gnegate :: a -> aSource
minus :: a -> a -> aSource
show/hide Instances
Group a => Group (Dual a)
Num a => Group (Sum a)
Fractional a => Group (Product a)
gnegate :: Group a => a -> aSource
minus :: Group a => a -> a -> aSource
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/Data-Monoid-Additive-Sugar.html hunk ./dist/doc/html/monoids/Data-Monoid-Additive-Sugar.html 1 + + +Data.Monoid.Additive.Sugar
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Monoid.Additive.Sugar
Documentation
module Data.Monoid.Additive
(+) :: Monoid m => m -> m -> mSource
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/Data-Monoid-Additive.html hunk ./dist/doc/html/monoids/Data-Monoid-Additive.html 1 + + +Data.Monoid.Additive
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Monoid.Additive
Documentation
plus :: Monoid m => m -> m -> mSource
zero :: Monoid m => mSource
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/Data-Monoid-Applicative.html hunk ./dist/doc/html/monoids/Data-Monoid-Applicative.html 1 + + +Data.Monoid.Applicative
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Monoid.Applicative
Documentation
module Data.Monoid.Reducer
newtype Traversal f Source
Constructors
Traversal
getTraversal :: f ()
show/hide Instances
newtype Alternate f a Source
Constructors
Alternate
getAlternate :: f a
show/hide Instances
newtype TraversalWith m n Source
Constructors
TraversalWith
getTraversalWith :: m n
show/hide Instances
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/Data-Monoid-Categorical.html hunk ./dist/doc/html/monoids/Data-Monoid-Categorical.html 1 + + +Data.Monoid.Categorical
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Monoid.Categorical
Synopsis
data Endo (~>) a = Endo {
getEndo :: a ~> a
}
Documentation
data Endo (~>) a Source
The Monoid of endomorphisms over some object in an arbitrary Category +
Constructors
Endo
getEndo :: a ~> a
show/hide Instances
Category ~> => Monoid (Endo ~> a)
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/Data-Monoid-Generator-Combinators.html hunk ./dist/doc/html/monoids/Data-Monoid-Generator-Combinators.html 1 + + +Data.Monoid.Generator.Combinators
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Monoid.Generator.Combinators
Documentation
module Data.Monoid.Generator
traverse_ :: (Generator c, Applicative f) => (Elem c -> f b) -> c -> f ()Source
for_ :: (Generator c, Applicative f) => c -> (Elem c -> f b) -> f ()Source
mapM_ :: (Generator c, Monad m) => (Elem c -> m b) -> c -> m ()Source
forM_ :: (Generator c, Monad m) => c -> (Elem c -> m b) -> m ()Source
concatMap :: Generator c => (Elem c -> [b]) -> c -> [b]Source
and :: (Generator c, Elem c ~ Bool) => c -> BoolSource
or :: (Generator c, Elem c ~ Bool) => c -> BoolSource
any :: Generator c => (Elem c -> Bool) -> c -> BoolSource
all :: Generator c => (Elem c -> Bool) -> c -> BoolSource
sum :: (Generator c, Num (Elem c)) => c -> Elem cSource
product :: (Generator c, Num (Elem c)) => c -> Elem cSource
elem :: (Generator c, Eq (Elem c)) => Elem c -> c -> BoolSource
notElem :: (Generator c, Eq (Elem c)) => Elem c -> c -> BoolSource
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/Data-Monoid-Generator.html hunk ./dist/doc/html/monoids/Data-Monoid-Generator.html 1 + + +Data.Monoid.Generator
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Monoid.Generator
Documentation
module Data.Monoid.Reducer
class Generator c whereSource
Associated Types
type Elem c :: *Source
Methods
mapReduce :: Reducer e m => (Elem c -> e) -> c -> mSource
mapTo :: Reducer e m => (Elem c -> e) -> m -> c -> mSource
mapFrom :: Reducer e m => (Elem c -> e) -> c -> m -> mSource
show/hide Instances
mapReduce :: (Generator c, Reducer e m) => (Elem c -> e) -> c -> mSource
mapTo :: (Generator c, Reducer e m) => (Elem c -> e) -> m -> c -> mSource
mapFrom :: (Generator c, Reducer e m) => (Elem c -> e) -> c -> m -> mSource
reduce :: (Generator c, Reducer (Elem c) m) => c -> mSource
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/Data-Monoid-IntMap.html hunk ./dist/doc/html/monoids/Data-Monoid-IntMap.html 1 + + +Data.Monoid.IntMap
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Monoid.IntMap
Documentation
module Data.Monoid.Reducer
data Union a Source
show/hide Instances
data UnionWith m Source
show/hide Instances
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/Data-Monoid-Lexical-SourcePosition.html hunk ./dist/doc/html/monoids/Data-Monoid-Lexical-SourcePosition.html 1 + + +Data.Monoid.Lexical.SourcePosition
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Monoid.Lexical.SourcePosition
Documentation
module Data.Monoid.Reducer.Char
data SourcePosition file Source
show/hide Instances
type SourceLine = IntSource
type SourceColumn = IntSource
sourceLine :: SourcePosition f -> Maybe SourceLineSource
sourceColumn :: SourcePosition f -> Maybe SourceColumnSource
startOfFile :: f -> SourcePosition fSource
showSourcePosition :: SourcePosition String -> StringSource
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/Data-Monoid-Lexical-UTF8-Decoder.html hunk ./dist/doc/html/monoids/Data-Monoid-Lexical-UTF8-Decoder.html 1 + + +Data.Monoid.Lexical.UTF8.Decoder
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Monoid.Lexical.UTF8.Decoder
Documentation
module Data.Monoid.Reducer.Char
data UTF8 m Source
show/hide Instances
runUTF8 :: CharReducer m => UTF8 m -> mSource
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/Data-Monoid-Lexical-Words.html hunk ./dist/doc/html/monoids/Data-Monoid-Lexical-Words.html 1 + + +Data.Monoid.Lexical.Words
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Monoid.Lexical.Words
Documentation
module Data.Monoid.Reducer.Char
data Words m Source
show/hide Instances
runWords :: Words m -> [m]Source
data Lines m Source
show/hide Instances
runLines :: Lines m -> [m]Source
data Unspaced m Source
show/hide Instances
data Unlined m Source
show/hide Instances
wordsFrom :: (Generator c, Elem c ~ Char, Reducer Char m, Reducer Char n, Reducer Char o) => m -> c -> [(m, n, o)]Source
linesFrom :: (Generator c, Elem c ~ Char, Reducer Char m, Reducer Char n, Reducer Char o) => m -> c -> [(m, n, o)]Source
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/Data-Monoid-Map.html hunk ./dist/doc/html/monoids/Data-Monoid-Map.html 1 + + +Data.Monoid.Map
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Monoid.Map
Documentation
module Data.Monoid.Reducer
data Union k a Source
show/hide Instances
Ord k => Monoid (Union k a)
Ord k => Reducer (Map k a) (Union k a)
data UnionWith k m Source
show/hide Instances
(Ord k, Monoid m) => Monoid (UnionWith k m)
(Ord k, Monoid m) => Reducer (Map k m) (UnionWith k m)
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/Data-Monoid-Monad.html hunk ./dist/doc/html/monoids/Data-Monoid-Monad.html 1 + + +Data.Monoid.Monad
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Monoid.Monad
Documentation
module Data.Monoid.Reducer
newtype Action m Source
Constructors
Action
getAction :: m ()
show/hide Instances
Monad m => Monoid (Action m)
Monad m => Reducer (m a) (Action m)
newtype MonadSum m a Source
Constructors
MonadSum
getMonadSum :: m a
show/hide Instances
Monad m => Monad (MonadSum m)
Functor m => Functor (MonadSum m)
MonadPlus m => MonadPlus (MonadSum m)
MonadPlus m => Reducer (m a) (MonadSum m a)
Eq (m a) => Eq (MonadSum m a)
Ord (m a) => Ord (MonadSum m a)
Read (m a) => Read (MonadSum m a)
Show (m a) => Show (MonadSum m a)
MonadPlus m => Monoid (MonadSum m a)
newtype ActionWith m n Source
Constructors
ActionWith
getActionWith :: m n
show/hide Instances
(Monad m, Monoid n) => Reducer (m n) (ActionWith m n)
(Monad m, Monoid n) => Monoid (ActionWith m n)
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/Data-Monoid-Multiplicative-Sugar.html hunk ./dist/doc/html/monoids/Data-Monoid-Multiplicative-Sugar.html 1 + + +Data.Monoid.Multiplicative.Sugar
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Monoid.Multiplicative.Sugar
Documentation
module Data.Monoid.Additive.Sugar
module Data.Monoid.Multiplicative
(*) :: MultiplicativeMonoid r => r -> r -> rSource
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/Data-Monoid-Multiplicative-Transformers.html hunk ./dist/doc/html/monoids/Data-Monoid-Multiplicative-Transformers.html 1 + + +Data.Monoid.Multiplicative.Transformers
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Monoid.Multiplicative.Transformers
Documentation
module Data.Monoid.Multiplicative
data Log m Source
Constructors
Log
getLog :: m
show/hide Instances
data Exp m Source
Constructors
Exp
getExp :: m
show/hide Instances
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/Data-Monoid-Multiplicative.html hunk ./dist/doc/html/monoids/Data-Monoid-Multiplicative.html 1 + + +Data.Monoid.Multiplicative
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Monoid.Multiplicative
Documentation
module Data.Monoid.Additive
class MultiplicativeMonoid m whereSource
Methods
one :: mSource
times :: m -> m -> mSource
show/hide Instances
Monoid m => MultiplicativeMonoid ([] m)
Monoid m => MultiplicativeMonoid (Exp m)
(Measured v m, Monoid m) => MultiplicativeMonoid (FingerTree v m)
one :: MultiplicativeMonoid m => mSource
times :: MultiplicativeMonoid m => m -> m -> mSource
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/Data-Monoid-Ord.html hunk ./dist/doc/html/monoids/Data-Monoid-Ord.html 1 + + +Data.Monoid.Ord
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Monoid.Ord
Contents
Max +
Min +
MaxPriority: Max semigroup w/ added bottom +
MinPriority: Min semigroup w/ added top +
Synopsis
module Data.Monoid.Reducer
newtype Max a = Max {
getMax :: a
}
newtype Min a = Min {
getMin :: a
}
newtype MaxPriority a = MaxPriority {
getMaxPriority :: Maybe a
}
newtype MinPriority a = MinPriority {
getMinPriority :: Maybe a
}
Documentation
module Data.Monoid.Reducer
Max +
newtype Max a Source
The Monoid (max,minBound) +
Constructors
Max
getMax :: a
show/hide Instances
Functor Max
Pointed Max
Copointed Max
(Ord a, Bounded a) => Reducer a (Max a)
Bounded a => Bounded (Max a)
Eq a => Eq (Max a)
Ord a => Ord (Max a)
Read a => Read (Max a)
Show a => Show (Max a)
(Ord a, Bounded a) => Monoid (Max a)
Min +
newtype Min a Source
The Monoid given by (min,maxBound) +
Constructors
Min
getMin :: a
show/hide Instances
Functor Min
Pointed Min
Copointed Min
(Ord a, Bounded a) => Reducer a (Min a)
Bounded a => Bounded (Min a)
Eq a => Eq (Min a)
Ord a => Ord (Min a)
Read a => Read (Min a)
Show a => Show (Min a)
(Ord a, Bounded a) => Monoid (Min a)
MaxPriority: Max semigroup w/ added bottom +
newtype MaxPriority a Source
The Monoid (max,Nothing) over Maybe a where Nothing is the bottom element +
Constructors
MaxPriority
getMaxPriority :: Maybe a
show/hide Instances
MinPriority: Min semigroup w/ added top +
newtype MinPriority a Source
The Monoid (min,Nothing) over Maybe a where Nothing is the top element +
Constructors
MinPriority
getMinPriority :: Maybe a
show/hide Instances
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/Data-Monoid-Reducer-Char.html hunk ./dist/doc/html/monoids/Data-Monoid-Reducer-Char.html 1 + + +Data.Monoid.Reducer.Char
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Monoid.Reducer.Char
Documentation
module Data.Monoid.Reducer
class Reducer Char m => CharReducer m whereSource
Methods
fromChar :: Char -> mSource
invalidChar :: [Word8] -> mSource
show/hide Instances
invalidChar :: CharReducer m => [Word8] -> mSource
fromChar :: CharReducer m => Char -> mSource
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/Data-Monoid-Reducer-Sugar.html hunk ./dist/doc/html/monoids/Data-Monoid-Reducer-Sugar.html 1 + + +Data.Monoid.Reducer.Sugar
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Monoid.Reducer.Sugar
Documentation
module Data.Monoid.Reducer
fromInteger :: Reducer Integer m => Integer -> mSource
class IsString a whereSource
Methods
fromString :: String -> aSource
fromString :: IsString a => String -> aSource
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/Data-Monoid-Reducer-With.html hunk ./dist/doc/html/monoids/Data-Monoid-Reducer-With.html 1 + + +Data.Monoid.Reducer.With
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Monoid.Reducer.With
Documentation
module Data.Monoid.Reducer
newtype WithReducer c m Source
Constructors
WithReducer
runWithReducer :: (m, c)
show/hide Instances
Reducer c m => Measured m (WithReducer c m)
Reducer c m => Reducer (WithReducer c m) m
withoutReducer :: (c `WithReducer` m) -> cSource
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/Data-Monoid-Reducer.html hunk ./dist/doc/html/monoids/Data-Monoid-Reducer.html 1 + + +Data.Monoid.Reducer
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Monoid.Reducer
Documentation
class Monoid m => Reducer c m whereSource
Methods
unit :: c -> mSource
snoc :: m -> c -> mSource
cons :: c -> m -> mSource
show/hide Instances
Reducer Bool All
Reducer Bool All
Reducer Bool Any
Reducer Bool Any
Reducer c ()
Reducer Char (SourcePosition file)
Reducer Char (SourcePosition file)
Reducer Char m => Reducer Char (Unlined m)
Reducer Char m => Reducer Char (Unlined m)
Reducer Char m => Reducer Char (Unspaced m)
Reducer Char m => Reducer Char (Unspaced m)
Reducer Char m => Reducer Char (Lines m)
Reducer Char m => Reducer Char (Lines m)
Reducer Char m => Reducer Char (Words m)
Reducer Char m => Reducer Char (Words m)
CharReducer m => Reducer Word8 (UTF8 m)
CharReducer m => Reducer Word8 (UTF8 m)
Num a => Reducer a (Product a)
Num a => Reducer a (Sum a)
Monoid a => Reducer a (Dual a)
Reducer c ([] c)
(Ord a, Bounded a) => Reducer a (Min a)
(Ord a, Bounded a) => Reducer a (Max a)
Monoid m => Reducer m (Self m)
Reducer c (Unit c)
Measured v a => Reducer a (FingerTree v a)
(Reducer c m, Reducer c n) => Reducer c ((,) m n)
(Reducer c m, Reducer c n, Reducer c o) => Reducer c ((,,) m n o)
(Reducer c m, Reducer c n, Reducer c o, Reducer c p) => Reducer c ((,,,) m n o p)
Monad m => Reducer (m a) (Action m)
Applicative f => Reducer (f a) (Traversal f)
Reducer (Maybe a) (Last a)
Reducer (Maybe a) (Last a)
Reducer (Maybe a) (First a)
Reducer (Maybe a) (First a)
Ord a => Reducer (Maybe a) (MinPriority a)
Ord a => Reducer (Maybe a) (MinPriority a)
Ord a => Reducer (Maybe a) (MaxPriority a)
Ord a => Reducer (Maybe a) (MaxPriority a)
Monoid m => Reducer (IntMap m) (UnionWith m)
Monoid m => Reducer (IntMap m) (UnionWith m)
Reducer (IntMap a) (Union a)
Reducer (IntMap a) (Union a)
(Monad m, Monoid n) => Reducer (m n) (ActionWith m n)
MonadPlus m => Reducer (m a) (MonadSum m a)
(Applicative m, Monoid n) => Reducer (m n) (TraversalWith m n)
Alternative f => Reducer (f a) (Alternate f a)
Reducer c m => Reducer (WithReducer c m) m
Reducer (a -> a) (Endo a)
Reducer (a -> a) (Endo a)
(Ord k, Monoid m) => Reducer (Map k m) (UnionWith k m)
(Ord k, Monoid m) => Reducer (Map k m) (UnionWith k m)
Ord k => Reducer (Map k a) (Union k a)
Ord k => Reducer (Map k a) (Union k a)
unit :: Reducer c m => c -> mSource
snoc :: Reducer c m => m -> c -> mSource
cons :: Reducer c m => c -> m -> mSource
foldMapReduce :: (Foldable f, Reducer e m) => (a -> e) -> f a -> mSource
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/Data-Monoid-Self.html hunk ./dist/doc/html/monoids/Data-Monoid-Self.html 1 + + +Data.Monoid.Self
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Monoid.Self
Documentation
module Data.Monoid.Reducer
newtype Self m Source
Constructors
Self
getSelf :: m
show/hide Instances
Functor Self
Pointed Self
Copointed Self
Monoid m => Reducer m (Self m)
Monoid m => Monoid (Self m)
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/Data-Monoid-Unit.html hunk ./dist/doc/html/monoids/Data-Monoid-Unit.html 1 + + +Data.Monoid.Unit
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Monoid.Unit
Documentation
module Data.Monoid.Reducer
newtype Unit c Source
Constructors
Unit
getUnit :: ()
show/hide Instances
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/doc-index.html hunk ./dist/doc/html/monoids/doc-index.html 1 + + +monoids-0.1.1: Lots of Monoids (Index)
 monoids-0.1.1: Lots of MonoidsContentsIndex
Search:
*
*>
+
-
<|>
>=>
Action
1 (Type/Class)
2 (Data Constructor)
ActionWith
1 (Type/Class)
2 (Data Constructor)
All
1 (Data Constructor)
2 (Type/Class)
all
Alternate
1 (Type/Class)
2 (Data Constructor)
Alternative
and
Any
1 (Data Constructor)
2 (Type/Class)
any
appEndo
Applicative
CharReducer
concatMap
cons
Dual
1 (Data Constructor)
2 (Type/Class)
Elem
elem
empty
Endo
1 (Data Constructor)
2 (Type/Class)
3 (Type/Class)
4 (Data Constructor)
Exp
1 (Type/Class)
2 (Data Constructor)
First
1 (Data Constructor)
2 (Type/Class)
foldMapReduce
forM_
for_
fromChar
fromInteger
fromString
Generator
getAction
getActionWith
getAll
getAlternate
getAny
getDual
getEndo
getExp
getFirst
getLast
getLog
getMax
getMaxPriority
getMin
getMinPriority
getMonadSum
getProduct
getSelf
getSum
getTraversal
getTraversalWith
getUnion
1 (Function)
2 (Function)
getUnionWith
1 (Function)
2 (Function)
getUnit
gnegate
Group
invalidChar
IsString
Last
1 (Data Constructor)
2 (Type/Class)
liftA2
liftM2
Lines
linesFrom
Log
1 (Type/Class)
2 (Data Constructor)
mapFrom
mapM_
mappend
mapReduce
mapTo
Max
1 (Type/Class)
2 (Data Constructor)
MaxPriority
1 (Type/Class)
2 (Data Constructor)
mconcat
mempty
Min
1 (Type/Class)
2 (Data Constructor)
MinPriority
1 (Type/Class)
2 (Data Constructor)
minus
MonadPlus
MonadSum
1 (Type/Class)
2 (Data Constructor)
Monoid
mplus
MultiplicativeMonoid
mzero
negate
notElem
one
or
plus
Product
1 (Data Constructor)
2 (Type/Class)
product
pure
reduce
Reducer
runLines
runUnlined
runUnspaced
runUTF8
runWithReducer
runWords
Self
1 (Type/Class)
2 (Data Constructor)
showSourcePosition
snoc
SourceColumn
sourceColumn
SourceLine
sourceLine
SourcePosition
startOfFile
Sum
1 (Data Constructor)
2 (Type/Class)
sum
times
Traversal
1 (Type/Class)
2 (Data Constructor)
TraversalWith
1 (Type/Class)
2 (Data Constructor)
traverse_
Union
1 (Type/Class)
2 (Type/Class)
UnionWith
1 (Type/Class)
2 (Type/Class)
Unit
1 (Type/Class)
2 (Data Constructor)
unit
Unlined
Unspaced
UTF8
withoutReducer
WithReducer
1 (Type/Class)
2 (Data Constructor)
Words
wordsFrom
zero
addfile ./dist/doc/html/monoids/haddock-util.js hunk ./dist/doc/html/monoids/haddock-util.js 1 +// Haddock JavaScript utilities +function toggle(button,id) +{ + var n = document.getElementById(id).style; + if (n.display == "none") + { + button.src = "minus.gif"; + n.display = "block"; + } + else + { + button.src = "plus.gif"; + n.display = "none"; + } +} + + +var max_results = 75; // 50 is not enough to search for map in the base libraries +var shown_range = null; +var last_search = null; + +function quick_search() +{ + perform_search(false); +} + +function full_search() +{ + perform_search(true); +} + + +function perform_search(full) +{ + var text = document.getElementById("searchbox").value.toLowerCase(); + if (text == last_search && !full) return; + last_search = text; + + var table = document.getElementById("indexlist"); + var status = document.getElementById("searchmsg"); + var children = table.firstChild.childNodes; + + // first figure out the first node with the prefix + var first = bisect(-1); + var last = (first == -1 ? -1 : bisect(1)); + + if (first == -1) + { + table.className = ""; + status.innerHTML = "No results found, displaying all"; + } + else if (first == 0 && last == children.length - 1) + { + table.className = ""; + status.innerHTML = ""; + } + else if (last - first >= max_results && !full) + { + table.className = ""; + status.innerHTML = "More than " + max_results + ", press Search to display"; + } + else + { + // decide what you need to clear/show + if (shown_range) + setclass(shown_range[0], shown_range[1], "indexrow"); + setclass(first, last, "indexshow"); + shown_range = [first, last]; + table.className = "indexsearch"; + status.innerHTML = ""; + } + + + function setclass(first, last, status) + { + for (var i = first; i <= last; i++) + { + children[i].className = status; + } + } + + + // do a binary search, treating 0 as ... + // return either -1 (no 0's found) or location of most far match + function bisect(dir) + { + var first = 0, finish = children.length - 1; + var mid, success = false; + + while (finish - first > 3) + { + mid = Math.floor((finish + first) / 2); + + var i = checkitem(mid); + if (i == 0) i = dir; + if (i == -1) + finish = mid; + else + first = mid; + } + var a = (dir == 1 ? first : finish); + var b = (dir == 1 ? finish : first); + for (var i = b; i != a - dir; i -= dir) + { + if (checkitem(i) == 0) return i; + } + return -1; + } + + + // from an index, decide what the result is + // 0 = match, -1 is lower, 1 is higher + function checkitem(i) + { + var s = getitem(i).toLowerCase().substr(0, text.length); + if (s == text) return 0; + else return (s > text ? -1 : 1); + } + + + // from an index, get its string + // this abstracts over alternates + function getitem(i) + { + for ( ; i >= 0; i--) + { + var s = children[i].firstChild.firstChild.data; + if (s.indexOf(' ') == -1) + return s; + } + return ""; // should never be reached + } +} addfile ./dist/doc/html/monoids/haddock.css hunk ./dist/doc/html/monoids/haddock.css 1 +/* -------- Global things --------- */ + +BODY { + background-color: #ffffff; + color: #000000; + font-family: sans-serif; + } + +A:link { color: #0000e0; text-decoration: none } +A:visited { color: #0000a0; text-decoration: none } +A:hover { background-color: #e0e0ff; text-decoration: none } + +TABLE.vanilla { + width: 100%; + border-width: 0px; + /* I can't seem to specify cellspacing or cellpadding properly using CSS... */ +} + +TABLE.vanilla2 { + border-width: 0px; +} + +/* font is a little too small in MSIE */ +TT { font-size: 100%; } +PRE { font-size: 100%; } + +LI P { margin: 0pt } + +TD { + border-width: 0px; +} + +TABLE.narrow { + border-width: 0px; +} + +TD.s8 { height: 8px; } +TD.s15 { height: 15px; } + +SPAN.keyword { text-decoration: underline; } + +/* Resize the buttom image to match the text size */ +IMG.coll { width : 0.75em; height: 0.75em; margin-bottom: 0; margin-right: 0.5em } + +/* --------- Contents page ---------- */ + +DIV.node { + padding-left: 3em; +} + +DIV.cnode { + padding-left: 1.75em; +} + +SPAN.pkg { + position: absolute; + left: 50em; +} + +/* --------- Documentation elements ---------- */ + +TD.children { + padding-left: 25px; + } + +TD.synopsis { + padding: 2px; + background-color: #f0f0f0; + font-family: monospace + } + +TD.decl { + padding: 2px; + background-color: #f0f0f0; + font-family: monospace; + vertical-align: top; + } + +TD.topdecl { + padding: 2px; + background-color: #f0f0f0; + font-family: monospace; + vertical-align: top; +} + +TABLE.declbar { + border-spacing: 0px; + } + +TD.declname { + width: 100%; + } + +TD.declbut { + padding-left: 5px; + padding-right: 5px; + border-left-width: 1px; + border-left-color: #000099; + border-left-style: solid; + white-space: nowrap; + font-size: small; + } + +/* + arg is just like decl, except that wrapping is not allowed. It is + used for function and constructor arguments which have a text box + to the right, where if wrapping is allowed the text box squashes up + the declaration by wrapping it. +*/ +TD.arg { + padding: 2px; + background-color: #f0f0f0; + font-family: monospace; + vertical-align: top; + white-space: nowrap; + } + +TD.recfield { padding-left: 20px } + +TD.doc { + padding-top: 2px; + padding-left: 10px; + } + +TD.ndoc { + padding: 2px; + } + +TD.rdoc { + padding: 2px; + padding-left: 10px; + width: 100%; + } + +TD.body { + padding-left: 10px + } + +TD.pkg { + width: 100%; + padding-left: 10px +} + +TABLE.indexsearch TR.indexrow { + display: none; +} +TABLE.indexsearch TR.indexshow { + display: table-row; +} + +TD.indexentry { + vertical-align: top; + padding-right: 10px + } + +TD.indexannot { + vertical-align: top; + padding-left: 20px; + white-space: nowrap + } + +TD.indexlinks { + width: 100% + } + +/* ------- Section Headings ------- */ + +TD.section1 { + padding-top: 15px; + font-weight: bold; + font-size: 150% + } + +TD.section2 { + padding-top: 10px; + font-weight: bold; + font-size: 130% + } + +TD.section3 { + padding-top: 5px; + font-weight: bold; + font-size: 110% + } + +TD.section4 { + font-weight: bold; + font-size: 100% + } + +/* -------------- The title bar at the top of the page */ + +TD.infohead { + color: #ffffff; + font-weight: bold; + padding-right: 10px; + text-align: left; +} + +TD.infoval { + color: #ffffff; + padding-right: 10px; + text-align: left; +} + +TD.topbar { + background-color: #000099; + padding: 5px; +} + +TD.title { + color: #ffffff; + padding-left: 10px; + width: 100% + } + +TD.topbut { + padding-left: 5px; + padding-right: 5px; + border-left-width: 1px; + border-left-color: #ffffff; + border-left-style: solid; + white-space: nowrap; + } + +TD.topbut A:link { + color: #ffffff + } + +TD.topbut A:visited { + color: #ffff00 + } + +TD.topbut A:hover { + background-color: #6060ff; + } + +TD.topbut:hover { + background-color: #6060ff + } + +TD.modulebar { + background-color: #0077dd; + padding: 5px; + border-top-width: 1px; + border-top-color: #ffffff; + border-top-style: solid; + } + +/* --------- The page footer --------- */ + +TD.botbar { + background-color: #000099; + color: #ffffff; + padding: 5px + } +TD.botbar A:link { + color: #ffffff; + text-decoration: underline + } +TD.botbar A:visited { + color: #ffff00 + } +TD.botbar A:hover { + background-color: #6060ff + } + addfile ./dist/doc/html/monoids/haskell_icon.gif binary ./dist/doc/html/monoids/haskell_icon.gif oldhex * newhex *47494638376110001000f70f00000000800000008000808000000080800080008080c0c0c08080 *80ff000000ff00ffff000000ffff00ff00ffffffffff0000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0021f90401000000002c000000001000100007086c0001007840b0a0418202073e38b0b021c387 *07143e2440c0a143040e091cd0787021c686151f84347800e343901d4b12646870e44a930d0952 *3ca832a6cc990555b2bc2992e4c79d3847ea2c88b3a7c89a2c8b8aa43874e941a60810003840b5 *aa55aa511346ddca75abc080003b addfile ./dist/doc/html/monoids/index.html hunk ./dist/doc/html/monoids/index.html 1 + + +monoids-0.1.1: Lots of Monoids
 monoids-0.1.1: Lots of MonoidsContentsIndex
monoids-0.1.1: Lots of Monoids
Lots of Monoids +
Modules
show/hideData
show/hideData.Group
Data.Group.Sugar
show/hideMonoid
show/hideData.Monoid.Additive
Data.Monoid.Additive.Sugar
Data.Monoid.Applicative
Data.Monoid.Categorical
show/hideData.Monoid.Generator
Data.Monoid.Generator.Combinators
Data.Monoid.IntMap
show/hideLexical
Data.Monoid.Lexical.SourcePosition
show/hideUTF8
Data.Monoid.Lexical.UTF8.Decoder
Data.Monoid.Lexical.Words
Data.Monoid.Map
Data.Monoid.Monad
show/hideData.Monoid.Multiplicative
Data.Monoid.Multiplicative.Sugar
Data.Monoid.Multiplicative.Transformers
Data.Monoid.Ord
show/hideData.Monoid.Reducer
Data.Monoid.Reducer.Char
Data.Monoid.Reducer.Sugar
Data.Monoid.Reducer.With
Data.Monoid.Self
Data.Monoid.Unit
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/minus.gif binary ./dist/doc/html/monoids/minus.gif oldhex * newhex *47494638396109000900910000fefefe8282820202020000002c00000000090009000002118c8f *a00bc6eb5e0b40583b6596f1a11f14003b addfile ./dist/doc/html/monoids/monoids.haddock binary ./dist/doc/html/monoids/monoids.haddock oldhex * newhex *0d0cface0004000000000000419100000000000031537600000000000000000000000000000000 *000000000000000100000000000000010000000000000000000000000000000100000000000000 *020000000000000000000000000000000200000000000000030000000000000000000000000000 *000300000000000000040000000000000000000000000000000300000000000000050000000000 *000000000000000000000300000000000000060000000000000000000000000000000400000000 *000000070000000000000000000000000000000400000000000000080000000000000000000000 *0000000005000000000000000900000000000000000000000000000005000000000000000a0000 *0000000000000000000000000005000000000000000b0000000000000000000000000000000600 *0000000000000c00000000000000000000000000000006000000000000000d0000000000000000 *0000000000000006000000000000000e0000000000000000000000000000000600000000000000 *0f0000000000000000000000000000000600000000000000100000000000000000000000000000 *000700000000000000110000000000000000000000000000000700000000000000120000000000 *000000000000000000000700000000000000130000000000000000000000000000000800000000 *000000140000000000000000000000000000000800000000000000150000000000000000000000 *000000000800000000000000160000000000000000000000000000000800000000000000170000 *000000000000000000000000000800000000000000180000000000000000000000000000000800 *0000000000001900000000000000000000000000000008000000000000001a0000000000000000 *0000000000000009000000000000001b0000000000000000000000000000000900000000000000 *1c0000000000000000000000000000000a000000000000001d0000000000000000000000000000 *000a000000000000001e0000000000000000000000000000000a000000000000001f0000000000 *000000000000000000000a00000000000000200000000000000000000000000000000b00000000 *000000210000000000000000000000000000000b00000000000000220000000000000000000000 *000000000b00000000000000230000000000000000000000000000000b00000000000000240000 *000000000000000000000000000b00000000000000250000000000000000000000000000000b00 *000000000000260000000000000000000000000000000c00000000000000270000000000000000 *000000000000000c00000000000000280000000000000000000000000000000c00000000000000 *290000000000000000000000000000000d000000000000002a0000000000000000000000000000 *000d000000000000002b0000000000000000000000000000000d000000000000002c0000000000 *000000000000000000000d000000000000002d0000000000000000000000000000000d00000000 *0000002e0000000000000000000000000000000d000000000000002f0000000000000000000000 *000000000d00000000000000300000000000000000000000000000000d00000000000000310000 *000000000000000000000000000d00000000000000320000000000000000000000000000000d00 *000000000000330000000000000000000000000000000e00000000000000340000000000000000 *000000000000000e00000000000000350000000000000000000000000000000e00000000000000 *360000000000000000000000000000000e00000000000000370000000000000000000000000000 *000e00000000000000380000000000000000000000000000000e00000000000000390000000000 *000000000000000000000e000000000000003a0000000000000000000000000000000e00000000 *0000003b0000000000000000000000000000000e000000000000003c0000000000000000000000 *000000000e000000000000003d0000000000000000000000000000000e000000000000003e0000 *000000000000000000000000000e000000000000003f0000000000000000000000000000000f00 *000000000000400000000000000000000000000000000f00000000000000410000000000000000 *000000000000000f00000000000000420000000000000000000000000000000f00000000000000 *430000000000000000000000000000000f00000000000000440000000000000000000000000000 *000f00000000000000450000000000000000000000000000000f00000000000000460000000000 *000000000000000000000f00000000000000470000000000000000000000000000000f00000000 *000000480000000000000000000000000000001000000000000000490000000000000000000000 *0000000010000000000000004a00000000000000000000000000000010000000000000004b0000 *0000000000000000000000000010000000000000004c0000000000000000000000000000001000 *0000000000004d00000000000000000000000000000010000000000000004e0000000000000000 *0000000000000010000000000000004f0000000000000000000000000000001000000000000000 *500000000000000000000000000000001000000000000000510000000000000000000000000000 *001100000000000000520000000000000000000000000000001100000000000000530000000000 *000000000000000000001100000000000000540000000000000000000000000000001100000000 *000000550000000000000000000000000000001200000000000000560000000000000000000000 *000000001200000000000000570000000000000000000000000000001200000000000000580000 *000000000000000000000000001200000000000000590000000000000000000000000000001300 *0000000000005a00000000000000000000000000000013000000000000005b0000000000000000 *0000000000000013000000000000005c0000000000000000000000000000001400000000000000 *5d00000000000000000000000000000014000000000000005e0000000000000000000000000000 *0014000000000000005f0000000000000000000000000000001400000000000000600000000000 *000000000000000000001400000000000000610000000000000000000000000000001400000000 *000000620000000000000000000000000000001400000000000000630000000000000000000000 *000000001400000000000000640000000000000000000000000000001400000000000000650000 *000000000000000000000000001400000000000000660000000000000000000000000000001400 *000000000000670000000000000000000000000000001400000000000000680000000000000000 *000000000000001400000000000000690000000000000000000000000000001500000000000000 *6a00000000000000000000000000000015000000000000006b0000000000000000000000000000 *0015000000000000006c00000000000000000000000000000016000000000000006d0000000000 *0000000000000000000016000000000000006e0000000000000000000000000000001600000000 *0000006f0000000000000000000000000000001700000000000000700000000000000000000000 *000000001700000000000000710000000000000000000000000000001700000000000000720000 *000000000000000000000000001700000000000000730000000000000000000000000000001700 *000000000000740000000000000000000000000000001700000000000000750000000000000000 *0000000000000018180000000000000000000000000000000100000000001e0000000000000076 *000000000000007700000000000000780000000000000079000000000000007a00000000000000 *7b000000000000007c000000000000007d000000000000007e000000000000007f000000000000 *008000000000000000810000000000000082000000000000008300000000000000840000000000 *000085000000000000008600000000000000870000000000000088000000000000008900000000 *0000008a000000000000008b000000000000008c000000000000008d000000000000008e000000 *000000008f00000000000000900000000000000091000000000000000000000000000000010200 *0000000000000000000000000000010000000000000000000000000000000200000000001f0000 *000000000076000000000000007700000000000000780000000000000079000000000000007a00 *0000000000007b000000000000007c000000000000007d000000000000007e000000000000007f *000000000000008000000000000000810000000000000082000000000000008300000000000000 *840000000000000085000000000000008600000000000000870000000000000088000000000000 *0089000000000000008a000000000000008b000000000000008c000000000000008d0000000000 *00008e000000000000008f00000000000000900000000000000091000000000000000000000000 *000000010000000000000002010000000000000002000000000000000000000000000000030000 *000000210000000000000076000000000000007700000000000000780000000000000079000000 *000000007a000000000000007b000000000000007c000000000000007d000000000000007e0000 *00000000007f000000000000008000000000000000810000000000000082000000000000008300 *000000000000840000000000000085000000000000008600000000000000870000000000000088 *0000000000000089000000000000008a000000000000008b000000000000008c00000000000000 *8d000000000000008e000000000000008f00000000000000900000000000000091000000000000 *000000000000000000010000000000000003000000000000000400000000000000050300000000 *000000030000000000000004000000000000000500000000000000000000000000000004000000 *000024000000000000007600000000000000770000000000000078000000000000007900000000 *0000007a000000000000007b000000000000007c000000000000007d000000000000007e000000 *000000007f00000000000000800000000000000081000000000000008200000000000000830000 *000000000084000000000000008500000000000000860000000000000087000000000000008800 *00000000000089000000000000008a000000000000008b000000000000008c000000000000008d *000000000000008e000000000000008f0000000000000090000000000000009100000000000000 *000000000000000001000000000000000200000000000000030000000000000004000000000000 *000500000000000000060000000000000007020000000000000006000000000000000700000000 *000000000000000000000005000000000200000000000000920301020200000041000000200104 *010000000000000000790000000000000019000000000000001a01020b00000020000000690000 *0073000000200000006a0000007500000073000000740000002000000061000000200104010000 *000000000000930000000000000019000000000000001b01021300000020000000770000006900 *00007400000068000000200000006f0000006e00000065000000200000006f000000620000006a *0000006500000063000000740000002e000000200000000a01023c000000200000007400000072 *0000007900000020000000740000006f0000002000000069000000670000006e0000006f000000 *720000006500000020000000740000006800000065000000200000007000000068000000610000 *006e000000740000006f0000006d00000020000000740000007900000070000000650000002000 *0000700000006100000072000000610000006d0000006500000074000000650000007200000020 *000000610000007600000061000000690000006c00000061000000620000006c00000065000000 *200000007400000068000000720000006f00000075000000670000006800000020010201000000 *6102010000000a0000000000000008030102040000005400000068000000650000002001040100 *00000000000000790000000000000019000000000000001a010233000000200000006f00000066 *00000020000000650000006e000000640000006f0000006d0000006f0000007200000070000000 *6800000069000000730000006d00000073000000200000006f0000007600000065000000720000 *0020000000730000006f0000006d00000065000000200000006f000000620000006a0000006500 *0000630000007400000020000000690000006e00000020000000610000006e0000002000000061 *000000720000006200000069000000740000007200000061000000720000007900000020010401 *0000000000000000930000000000000019000000000000001b02010000000a0600000000000000 *760000000000000078000000000000007900000000000000080000000000000009000000000000 *000a0300000000000000080000000000000009000000000000000a000000000000000000000000 *000000060000000000210000000000000076000000000000007700000000000000780000000000 *000079000000000000007a000000000000007b000000000000007c000000000000007d00000000 *0000007e000000000000007f000000000000008000000000000000810000000000000082000000 *000000008300000000000000840000000000000085000000000000008600000000000000870000 *0000000000880000000000000089000000000000008a000000000000008b000000000000008c00 *0000000000008d000000000000008e000000000000008f00000000000000900000000000000091 *000000000000000b000000000000000c000000000000000d000000000000000e00000000000000 *0f05000000000000000b000000000000000c000000000000000d000000000000000e0000000000 *00000f000000000000000000000000000000070000000000240000000000000076000000000000 *007700000000000000780000000000000079000000000000007a000000000000007b0000000000 *00007c000000000000007d000000000000007e000000000000007f000000000000008000000000 *000000810000000000000082000000000000008300000000000000840000000000000085000000 *0000000086000000000000008700000000000000880000000000000089000000000000008a0000 *00000000008b000000000000008c000000000000008d000000000000008e000000000000008f00 *000000000000900000000000000091000000000000000b000000000000000c000000000000000d *000000000000000e000000000000000f0000000000000010000000000000001100000000000000 *120300000000000000100000000000000012000000000000001100000000000000000000000000 *00000800000000002b000000000000007600000000000000770000000000000078000000000000 *0079000000000000007a000000000000007b000000000000007c000000000000007d0000000000 *00007e000000000000007f00000000000000800000000000000081000000000000008200000000 *000000830000000000000084000000000000008500000000000000860000000000000087000000 *00000000880000000000000089000000000000008a000000000000008b000000000000008c0000 *00000000008d000000000000008e000000000000008f0000000000000090000000000000009100 *0000000000000b000000000000000c000000000000000d000000000000000e000000000000000f *000000000000001000000000000000110000000000000012000000000000001300000000000000 *140000000000000015000000000000001600000000000000170000000000000018000000000000 *001907000000000000001300000000000000150000000000000014000000000000001800000000 *000000170000000000000016000000000000001900000000000000000000000000000009000000 *000026000000000000007600000000000000770000000000000078000000000000007900000000 *0000007a000000000000007b000000000000007c000000000000007d000000000000007e000000 *000000007f00000000000000800000000000000081000000000000008200000000000000830000 *000000000084000000000000008500000000000000860000000000000087000000000000008800 *00000000000089000000000000008a000000000000008b000000000000008c000000000000008d *000000000000008e000000000000008f0000000000000090000000000000009100000000000000 *0b000000000000000c000000000000000d000000000000000e000000000000000f000000000000 *001000000000000000110000000000000012000000000000001a000000000000001b0200000000 *0000001a000000000000001b0000000000000000000000000000000a0000000000250000000000 *000076000000000000007700000000000000780000000000000079000000000000007a00000000 *0000007b000000000000007c000000000000007d000000000000007e000000000000007f000000 *000000008000000000000000810000000000000082000000000000008300000000000000840000 *000000000085000000000000008600000000000000870000000000000088000000000000008900 *0000000000008a000000000000008b000000000000008c000000000000008d000000000000008e *000000000000008f00000000000000900000000000000091000000000000000b00000000000000 *0c000000000000000d000000000000000e000000000000000f000000000000001c000000000000 *001d000000000000001e000000000000001f04000000000000001c000000000000001d00000000 *0000001e000000000000001f0000000000000000000000000000000b0000000000270000000000 *000076000000000000007700000000000000780000000000000079000000000000007a00000000 *0000007b000000000000007c000000000000007d000000000000007e000000000000007f000000 *000000008000000000000000810000000000000082000000000000008300000000000000840000 *000000000085000000000000008600000000000000870000000000000088000000000000008900 *0000000000008a000000000000008b000000000000008c000000000000008d000000000000008e *000000000000008f00000000000000900000000000000091000000000000000b00000000000000 *0c000000000000000d000000000000000e000000000000000f0000000000000020000000000000 *002100000000000000220000000000000023000000000000002400000000000000250600000000 *000000200000000000000021000000000000002200000000000000230000000000000024000000 *00000000250000000000000000000000000000000c000000000024000000000000007600000000 *0000007700000000000000780000000000000079000000000000007a000000000000007b000000 *000000007c000000000000007d000000000000007e000000000000007f00000000000000800000 *000000000081000000000000008200000000000000830000000000000084000000000000008500 *00000000000086000000000000008700000000000000880000000000000089000000000000008a *000000000000008b000000000000008c000000000000008d000000000000008e00000000000000 *8f00000000000000900000000000000091000000000000000b000000000000000c000000000000 *000d000000000000000e000000000000000f000000000000002600000000000000270000000000 *000028030000000000000028000000000000002600000000000000270000000000000000000000 *000000000d00000000002e00000000000000760000000000000077000000000000007800000000 *00000079000000000000007a000000000000007b000000000000007c000000000000007d000000 *000000007e000000000000007f0000000000000080000000000000008100000000000000820000 *000000000083000000000000008400000000000000850000000000000086000000000000008700 *000000000000880000000000000089000000000000008a000000000000008b000000000000008c *000000000000008d000000000000008e000000000000008f000000000000009000000000000000 *91000000000000000b000000000000000c000000000000000d000000000000000e000000000000 *000f00000000000000100000000000000011000000000000001200000000000000290000000000 *00002a000000000000002b000000000000002c000000000000002d000000000000002e00000000 *0000002f0000000000000030000000000000003100000000000000320a000000000000002e0000 *00000000002f000000000000002d0000000000000030000000000000002b000000000000002c00 *00000000000029000000000000002a000000000000003100000000000000320000000000000000 *000000000000000e00000000040000000000000033030102040000005400000068000000650000 *00200104010000000000000000790000000000000019000000000000001a010201000000200107 *010201000000280104010000000000000000940000000000000019000000000000001c01020100 *00002c0104010000000000000000950000000000000019000000000000001d0201000000290102 *06000000200000006f000000760000006500000072000000200107010401000000000000000096 *0000000000000019000000000000001d0202000000200000006101020700000020000000770000 *006800000065000000720000006500000020010401000000000000000095000000000000001900 *0000000000001d0214000000200000006900000073000000200000007400000068000000650000 *0020000000740000006f0000007000000020000000650000006c000000650000006d0000006500 *00006e000000740000000a00000000000000360301020400000054000000680000006500000020 *0104010000000000000000790000000000000019000000000000001a0102010000002001070102 *01000000280104010000000000000000970000000000000019000000000000001c010201000000 *2c0104010000000000000000950000000000000019000000000000001d02010000002901020600 *0000200000006f0000007600000065000000720000002001070104010000000000000000960000 *000000000019000000000000001d02020000002000000061010207000000200000007700000068 *000000650000007200000065000000200104010000000000000000950000000000000019000000 *000000001d02170000002000000069000000730000002000000074000000680000006500000020 *000000620000006f00000074000000740000006f0000006d00000020000000650000006c000000 *650000006d000000650000006e000000740000000a000000000000003903010204000000540000 *006800000065000000200104010000000000000000790000000000000019000000000000001a01 *020a00000020000000670000006900000076000000650000006e00000020000000620000007900 *000020010701020100000028010401000000000000000094000000000000001900000000000000 *1c0102010000002c0104010000000000000000980000000000000019000000000000001e020100 *00002902010000000a000000000000003c03010204000000540000006800000065000000200104 *010000000000000000790000000000000019000000000000001a01020100000020010701020100 *0000280104010000000000000000970000000000000019000000000000001c0102010000002c01 *04010000000000000000990000000000000019000000000000001e02010000002902010000000a *11000000000000007600000000000000780000000000000079000000000000000b000000000000 *000c00000000000000330000000000000034000000000000003500000000000000360000000000 *00003700000000000000380000000000000039000000000000003a000000000000003b00000000 *0000003c000000000000003d000000000000003e0c000000000000003c000000000000003d0000 *00000000003e0000000000000039000000000000003a000000000000003b000000000000003600 *000000000000370000000000000038000000000000003300000000000000340000000000000035 *0000000000000000000000000000000f00000000002f000000000000009a000000000000007600 *0000000000007700000000000000780000000000000079000000000000007a000000000000007b *000000000000007c000000000000007d000000000000007e000000000000007f00000000000000 *800000000000000081000000000000008200000000000000830000000000000084000000000000 *008500000000000000860000000000000087000000000000008800000000000000890000000000 *00008a000000000000008b000000000000008c000000000000008d000000000000008e00000000 *0000008f00000000000000900000000000000091000000000000009b000000000000009c000000 *000000009d000000000000009e000000000000000b000000000000000c000000000000000d0000 *00000000000e000000000000000f000000000000003f0000000000000040000000000000004100 *000000000000420000000000000043000000000000004400000000000000450000000000000046 *000000000000004709000000000000004500000000000000460000000000000047000000000000 *004200000000000000430000000000000044000000000000003f00000000000000400000000000 *000041000000000000000000000000000000100000000000310000000000000076000000000000 *009f00000000000000a000000000000000a100000000000000a200000000000000a30000000000 *0000a400000000000000a500000000000000770000000000000078000000000000007900000000 *0000007a000000000000007b000000000000007c000000000000007d000000000000007e000000 *000000007f00000000000000800000000000000081000000000000008200000000000000830000 *000000000084000000000000008500000000000000860000000000000087000000000000008800 *00000000000089000000000000008a000000000000008b000000000000008c000000000000008d *000000000000008e000000000000008f0000000000000090000000000000009100000000000000 *0b000000000000000c000000000000000d000000000000000e000000000000000f000000000000 *00480000000000000049000000000000004a000000000000004b000000000000004c0000000000 *00004d000000000000004e000000000000004f000000000000005009000000000000004e000000 *000000004f0000000000000050000000000000004b000000000000004c000000000000004d0000 *0000000000480000000000000049000000000000004a0000000000000000000000000000001100 *000000000b000000000000007600000000000000780000000000000079000000000000000b0000 *00000000000c000000000000000d000000000000000e0000000000000051000000000000005200 *000000000000530000000000000054040000000000000053000000000000005400000000000000 *5100000000000000520000000000000000000000000000001200000000000b0000000000000076 *00000000000000780000000000000079000000000000000b000000000000000c00000000000000 *0d000000000000000e000000000000005500000000000000560000000000000057000000000000 *005804000000000000005700000000000000580000000000000055000000000000005600000000 *000000000000000000000013000000000024000000000000007600000000000000770000000000 *0000780000000000000079000000000000007a000000000000007b000000000000007c00000000 *0000007d000000000000007e000000000000007f00000000000000800000000000000081000000 *000000008200000000000000830000000000000084000000000000008500000000000000860000 *00000000008700000000000000880000000000000089000000000000008a000000000000008b00 *0000000000008c000000000000008d000000000000008e000000000000008f0000000000000090 *0000000000000091000000000000000b000000000000000c000000000000000d00000000000000 *0e000000000000000f0000000000000059000000000000005a000000000000005b030000000000 *000059000000000000005a000000000000005b0000000000000000000000000000001400000000 *003400000000000000760000000000000077000000000000007800000000000000790000000000 *00007a000000000000007b000000000000007c000000000000007d000000000000007e00000000 *0000007f0000000000000080000000000000008100000000000000820000000000000083000000 *000000008400000000000000850000000000000086000000000000008700000000000000880000 *000000000089000000000000008a000000000000008b000000000000008c000000000000008d00 *0000000000008e000000000000008f00000000000000900000000000000091000000000000000b *000000000000000c000000000000000d000000000000000e000000000000000f00000000000000 *200000000000000021000000000000002200000000000000230000000000000024000000000000 *0025000000000000005c000000000000005d000000000000005e000000000000005f0000000000 *000060000000000000006100000000000000620000000000000063000000000000006400000000 *000000650000000000000066000000000000006700000000000000680d000000000000005c0000 *00000000005d000000000000005e000000000000005f0000000000000060000000000000006100 *000000000000620000000000000063000000000000006400000000000000650000000000000066 *000000000000006700000000000000680000000000000000000000000000001500000000002400 *00000000000076000000000000007700000000000000780000000000000079000000000000007a *000000000000007b000000000000007c000000000000007d000000000000007e00000000000000 *7f0000000000000080000000000000008100000000000000820000000000000083000000000000 *008400000000000000850000000000000086000000000000008700000000000000880000000000 *000089000000000000008a000000000000008b000000000000008c000000000000008d00000000 *0000008e000000000000008f00000000000000900000000000000091000000000000000b000000 *000000000c000000000000000d000000000000000e000000000000000f00000000000000690000 *00000000006a000000000000006b030000000000000069000000000000006a000000000000006b *000000000000000000000000000000160000000000210000000000000076000000000000007700 *000000000000780000000000000079000000000000007a000000000000007b000000000000007c *000000000000007d000000000000007e000000000000007f000000000000008000000000000000 *810000000000000082000000000000008300000000000000840000000000000085000000000000 *0086000000000000008700000000000000880000000000000089000000000000008a0000000000 *00008b000000000000008c000000000000008d000000000000008e000000000000008f00000000 *00000090000000000000009100000000000000000000000000000001000000000000006c000000 *000000006d000000000000006e03000000000000006c000000000000006d000000000000006e00 *000000000000000000000000000017000000000027000000000000007600000000000000770000 *0000000000780000000000000079000000000000007a000000000000007b000000000000007c00 *0000000000007d000000000000007e000000000000007f00000000000000800000000000000081 *000000000000008200000000000000830000000000000084000000000000008500000000000000 *86000000000000008700000000000000880000000000000089000000000000008a000000000000 *008b000000000000008c000000000000008d000000000000008e000000000000008f0000000000 *000090000000000000009100000000000000000000000000000001000000000000006c00000000 *0000006d000000000000006e000000000000006f00000000000000700000000000000071000000 *000000007200000000000000730000000000000074060000000000000072000000000000007300 *00000000000074000000000000006f000000000000007000000000000000710000000000000000 *000000000000001800000000002300000000000000760000000000000077000000000000007800 *00000000000079000000000000007a000000000000007b000000000000007c000000000000007d *000000000000007e000000000000007f0000000000000080000000000000008100000000000000 *820000000000000083000000000000008400000000000000850000000000000086000000000000 *008700000000000000880000000000000089000000000000008a000000000000008b0000000000 *00008c000000000000008d000000000000008e000000000000008f000000000000009000000000 *00000091000000000000000000000000000000010000000000000002000000000000006c000000 *000000006d000000000000006e000000000000007501000000000000007500000000000000a600 *00000000000000000000000000000100000000000000001f000000000000000000000000000000 *010000000000000000200000000000000000000000000000000200000000000000002100000000 *000000000000000000000003030000000000000022000000000000000000000000000000030000 *000000000000230000000000000000000000000000000300000000000000002400000000000000 *000000000000000004000000000000000025000000000000000000000000000000040000000000 *000000260000000000000000000000000000000503000000000000002700000000000000000000 *000000000005010000000000000027000000000000000000000000000000050000000000000000 *280000000000000000000000000000000603000000000000002900000000000000000000000000 *00000600000000000000002a0000000000000000000000000000000600000000000000002b0000 *000000000000000000000000000600000000000000002c00000000000000000000000000000006 *00000000000000002d0000000000000000000000000000000703000000000000002e0000000000 *000000000000000000000700000000000000002f00000000000000000000000000000007000000 *000000000030000000000000000000000000000000080300000000000000310000000000000000 *000000000000000803000000000000003200000000000000000000000000000008030000000000 *000033000000000000000000000000000000080000000000000000340000000000000000000000 *000000000800000000000000003500000000000000000000000000000008000000000000000036 *000000000000000000000000000000080000000000000000370000000000000000000000000000 *000903000000000000003800000000000000000000000000000009000000000000000039000000 *0000000000000000000000000a03000000000000003a0000000000000000000000000000000a01 *000000000000003a0000000000000000000000000000000a00000000000000003b000000000000 *0000000000000000000a00000000000000003c0000000000000000000000000000000b03000000 *000000003d0000000000000000000000000000000b03000000000000003e000000000000000000 *0000000000000b00000000000000003f0000000000000000000000000000000b00000000000000 *00400000000000000000000000000000000b000000000000000041000000000000000000000000 *0000000b0000000000000000420000000000000000000000000000000c03000000000000004300 *00000000000000000000000000000c000000000000000044000000000000000000000000000000 *0c0000000000000000450000000000000000000000000000000d03000000000000004600000000 *00000000000000000000000d0000000000000000470000000000000000000000000000000d0300 *000000000000480000000000000000000000000000000d00000000000000004900000000000000 *00000000000000000d03000000000000004a0000000000000000000000000000000d0300000000 *0000004b0000000000000000000000000000000d00000000000000004c00000000000000000000 *00000000000d00000000000000004d0000000000000000000000000000000d0000000000000000 *4e0000000000000000000000000000000d00000000000000004f00000000000000000000000000 *00000e0300000000000000500000000000000000000000000000000e0100000000000000500000 *000000000000000000000000000e0000000000000000510000000000000000000000000000000e *0300000000000000520000000000000000000000000000000e0100000000000000520000000000 *000000000000000000000e0000000000000000530000000000000000000000000000000e030000 *0000000000540000000000000000000000000000000e0100000000000000540000000000000000 *000000000000000e0000000000000000550000000000000000000000000000000e030000000000 *0000560000000000000000000000000000000e0100000000000000560000000000000000000000 *000000000e0000000000000000570000000000000000000000000000000f030000000000000058 *0000000000000000000000000000000f0100000000000000580000000000000000000000000000 *000f0000000000000000590000000000000000000000000000000f03000000000000005a000000 *0000000000000000000000000f01000000000000005a0000000000000000000000000000000f00 *000000000000005b0000000000000000000000000000000f03000000000000005c000000000000 *0000000000000000000f01000000000000005c0000000000000000000000000000000f00000000 *000000005d0000000000000000000000000000001003000000000000005e000000000000000000 *0000000000001001000000000000005e0000000000000000000000000000001000000000000000 *005f00000000000000000000000000000010030000000000000060000000000000000000000000 *000000100100000000000000600000000000000000000000000000001000000000000000006100 *000000000000000000000000000010030000000000000062000000000000000000000000000000 *100100000000000000620000000000000000000000000000001000000000000000006300000000 *000000000000000000000011030000000000000064000000000000000000000000000000110000 *000000000000650000000000000000000000000000001103000000000000006600000000000000 *000000000000000011000000000000000067000000000000000000000000000000120300000000 *000000640000000000000000000000000000001200000000000000006500000000000000000000 *000000000012030000000000000066000000000000000000000000000000120000000000000000 *670000000000000000000000000000001303000000000000006800000000000000000000000000 *000013010000000000000068000000000000000000000000000000130000000000000000690000 *000000000000000000000000001400000000000000006a00000000000000000000000000000014 *00000000000000006b0000000000000000000000000000001400000000000000006c0000000000 *000000000000000000001400000000000000006d00000000000000000000000000000014000000 *00000000006e0000000000000000000000000000001400000000000000006f0000000000000000 *000000000000001400000000000000007000000000000000000000000000000014000000000000 *000071000000000000000000000000000000140000000000000000720000000000000000000000 *000000001400000000000000007300000000000000000000000000000014000000000000000074 *000000000000000000000000000000140000000000000000750000000000000000000000000000 *001400000000000000007600000000000000000000000000000015030000000000000077000000 *000000000000000000000000150100000000000000770000000000000000000000000000001500 *000000000000007800000000000000000000000000000016030000000000000079000000000000 *0000000000000000001600000000000000007a0000000000000000000000000000001600000000 *000000007b0000000000000000000000000000001703000000000000007c000000000000000000 *0000000000001701000000000000007c0000000000000000000000000000001700000000000000 *007d0000000000000000000000000000001703000000000000007e000000000000000000000000 *0000001701000000000000007e0000000000000000000000000000001700000000000000007f00 *000000000000000000000000000018000000000000000080000000000000001900000000000000 *1a0000000000000000810000000000000019000000000000001a00000000000000008200000000 *00000019000000000000001a0000000000000000830000000000000019000000000000001a0300 *000000000000840000000000000019000000000000001a00000000000000008500000000000000 *19000000000000001a0100000000000000860000000000000019000000000000001a0300000000 *000000860000000000000019000000000000001a00000000000000008700000000000000190000 *00000000001a0100000000000000270000000000000019000000000000001a0300000000000000 *270000000000000019000000000000001a00000000000000008800000000000000190000000000 *00001a0100000000000000890000000000000019000000000000001a0300000000000000890000 *000000000019000000000000001a00000000000000008a0000000000000019000000000000001a *01000000000000008b0000000000000019000000000000001a03000000000000008b0000000000 *000019000000000000001a00000000000000008c0000000000000019000000000000001a010000 *00000000008d0000000000000019000000000000001a03000000000000008d0000000000000019 *000000000000001a00000000000000008e0000000000000019000000000000001a010000000000 *00008f0000000000000019000000000000001a03000000000000008f0000000000000019000000 *000000001a0000000000000000900000000000000019000000000000001a010000000000000091 *0000000000000019000000000000001a0300000000000000910000000000000019000000000000 *001a0000000000000000920000000000000019000000000000001a010000000000000093000000 *0000000019000000000000001a0300000000000000930000000000000000000000000000000503 *00000000000000940000000000000019000000000000001b030000000000000095000000000000 *001900000000000000960000000000000000970000000000000019000000000000001d01000000 *00000000980000000000000019000000000000001d030000000000000099000000000000001900 *0000000000009600000000000000009a0000000000000019000000000000009b00000000000000 *009c0000000000000019000000000000009b00000000000000009d000000000000001900000000 *0000009e03000000000000009f0000000000000019000000000000009e0000000000000000a000 *00000000000019000000000000009e0000000000000000a1000000000000001900000000000000 *9e0000000000000000a20000000000000019000000000000009e0000000000000000a300000000 *0000001900000000000000a40000000000000000a5000000000000001900000000000000a40000 *000000000000a6000000000000001900000000000000a40000000000000000a700000000000000 *1900000000000000a40300000000000000a8000000000000001900000000000000a40000000000 *000000a9000000000000001900000000000000a40000000000000000aa00000000000000190000 *0000000000a40300000000000000ab00000000000000ac000000000000000d6d6f6e6f6964732d *302e312e310000000000000014446174612e4d6f6e6f69642e4164646974697665000000000000 *001a446174612e4d6f6e6f69642e41646469746976652e5375676172000000000000000a446174 *612e47726f75700000000000000010446174612e47726f75702e53756761720000000000000017 *446174612e4d6f6e6f69642e43617465676f726963616c0000000000000013446174612e4d6f6e *6f69642e526564756365720000000000000018446174612e4d6f6e6f69642e526564756365722e *436861720000000000000022446174612e4d6f6e6f69642e4c65786963616c2e536f7572636550 *6f736974696f6e0000000000000020446174612e4d6f6e6f69642e4c65786963616c2e55544638 *2e4465636f6465720000000000000018446174612e4d6f6e6f69642e526564756365722e576974 *680000000000000015446174612e4d6f6e6f69642e47656e657261746f72000000000000001944 *6174612e4d6f6e6f69642e526564756365722e53756761720000000000000019446174612e4d6f *6e6f69642e4c65786963616c2e576f726473000000000000000f446174612e4d6f6e6f69642e4f *72640000000000000011446174612e4d6f6e6f69642e4d6f6e6164000000000000001744617461 *2e4d6f6e6f69642e4170706c69636174697665000000000000000f446174612e4d6f6e6f69642e *4d61700000000000000012446174612e4d6f6e6f69642e496e744d617000000000000000104461 *74612e4d6f6e6f69642e53656c660000000000000021446174612e4d6f6e6f69642e47656e6572 *61746f722e436f6d62696e61746f72730000000000000010446174612e4d6f6e6f69642e556e69 *74000000000000001a446174612e4d6f6e6f69642e4d756c7469706c6963617469766500000000 *00000027446174612e4d6f6e6f69642e4d756c7469706c696361746976652e5472616e73666f72 *6d6572730000000000000020446174612e4d6f6e6f69642e4d756c7469706c696361746976652e *5375676172000000000000000462617365000000000000000b446174612e4d6f6e6f6964000000 *0000000010436f6e74726f6c2e43617465676f72790000000000000008446174612e4f72640000 *00000000000a446174612e4d6179626500000000000000075072656c7564650000000000000004 *706c757300000000000000047a65726f00000000000000012b000000000000000547726f757000 *00000000000007676e656761746500000000000000056d696e757300000000000000012d000000 *00000000066e65676174650000000000000004456e646f0000000000000007676574456e646f00 *00000000000007526564756365720000000000000004756e69740000000000000004736e6f6300 *00000000000004636f6e73000000000000000d666f6c644d617052656475636500000000000000 *0b4368617252656475636572000000000000000866726f6d43686172000000000000000b696e76 *616c696443686172000000000000000e536f75726365506f736974696f6e000000000000000c53 *6f75726365436f6c756d6e000000000000000a536f757263654c696e65000000000000000b7374 *6172744f6646696c65000000000000000c736f75726365436f6c756d6e000000000000000a736f *757263654c696e65000000000000001273686f77536f75726365506f736974696f6e0000000000 *00000455544638000000000000000772756e55544638000000000000000b576974685265647563 *6572000000000000000e72756e5769746852656475636572000000000000000e776974686f7574 *52656475636572000000000000000947656e657261746f720000000000000004456c656d000000 *00000000096d617052656475636500000000000000056d6170546f00000000000000076d617046 *726f6d000000000000000672656475636500000000000000084973537472696e67000000000000 *000a66726f6d537472696e67000000000000000b66726f6d496e74656765720000000000000007 *556e6c696e6564000000000000000a72756e556e6c696e65640000000000000008556e73706163 *6564000000000000000b72756e556e73706163656400000000000000054c696e65730000000000 *000005576f726473000000000000000872756e576f726473000000000000000872756e4c696e65 *730000000000000009776f72647346726f6d00000000000000096c696e657346726f6d00000000 *0000000b4d696e5072696f72697479000000000000000e6765744d696e5072696f726974790000 *00000000000b4d61785072696f72697479000000000000000e6765744d61785072696f72697479 *00000000000000034d696e00000000000000066765744d696e00000000000000034d6178000000 *00000000066765744d6178000000000000000a416374696f6e57697468000000000000000d6765 *74416374696f6e5769746800000000000000084d6f6e616453756d000000000000000b6765744d *6f6e616453756d0000000000000006416374696f6e0000000000000009676574416374696f6e00 *0000000000000d54726176657273616c5769746800000000000000106765745472617665727361 *6c576974680000000000000009416c7465726e617465000000000000000c676574416c7465726e *617465000000000000000954726176657273616c000000000000000c6765745472617665727361 *6c0000000000000009556e696f6e57697468000000000000000c676574556e696f6e5769746800 *00000000000005556e696f6e0000000000000008676574556e696f6e000000000000000453656c *66000000000000000767657453656c66000000000000000974726176657273655f000000000000 *0004666f725f00000000000000056d61704d5f0000000000000005666f724d5f00000000000000 *09636f6e6361744d61700000000000000003616e6400000000000000026f720000000000000003 *616e790000000000000003616c6c000000000000000373756d000000000000000770726f647563 *740000000000000004656c656d00000000000000076e6f74456c656d0000000000000004556e69 *740000000000000007676574556e697400000000000000144d756c7469706c696361746976654d *6f6e6f696400000000000000036f6e65000000000000000574696d657300000000000000034578 *70000000000000000667657445787000000000000000034c6f6700000000000000066765744c6f *6700000000000000012a00000000000000076d617070656e6400000000000000076d636f6e6361 *7400000000000000066d656d70747900000000000000064d6f6e6f696400000000000000076765 *744475616c00000000000000044475616c0000000000000007617070456e646f00000000000000 *06676574416c6c0000000000000003416c6c0000000000000006676574416e7900000000000000 *03416e79000000000000000667657453756d000000000000000353756d000000000000000a6765 *7450726f64756374000000000000000750726f6475637400000000000000086765744669727374 *0000000000000005466972737400000000000000076765744c61737400000000000000044c6173 *7400000000000000034d6f6e000000000000000843617465676f7279000000000000000b474843 *2e436c617373657300000000000000036d696e00000000000000074e6f7468696e670000000000 *0000054d6179626500000000000000036d617800000000000000084748432e456e756d00000000 *000000086d6178426f756e6400000000000000086d696e426f756e64000000000000000d436f6e *74726f6c2e4d6f6e616400000000000000094d6f6e6164506c757300000000000000066c696674 *4d3200000000000000033e3d3e00000000000000056d706c757300000000000000056d7a65726f *0000000000000013436f6e74726f6c2e4170706c6963617469766500000000000000066c696674 *413200000000000000022a3e000000000000000470757265000000000000000b4170706c696361 *7469766500000000000000033c7c3e0000000000000005656d707479000000000000000b416c74 *65726e6174697665 addfile ./dist/doc/html/monoids/plus.gif binary ./dist/doc/html/monoids/plus.gif oldhex * newhex *47494638396109000900910000fefefe8282820202020000002c00000000090009000002148c8f *a00bb6b29c82ca897b5b7871cfce74085200003b addfile ./dist/doc/html/monoids/src/Data-Group-Sugar.html hunk ./dist/doc/html/monoids/src/Data-Group-Sugar.html 1 + + + + +Data/Group/Sugar.hs + + + +
module Data.Group.Sugar 
+    ( module Data.Monoid.Additive.Sugar
+    , module Data.Group
+    , (-)
+    , negate
+    ) where
+
+import Data.Monoid.Additive.Sugar
+import Data.Group
+import Prelude hiding ((-), negate)
+
+infixl 7 -
+
+(-) :: Group g => g -> g -> g
+(-) = minus
+
+negate :: Group g => g -> g
+negate = gnegate
+
+ addfile ./dist/doc/html/monoids/src/Data-Group.html hunk ./dist/doc/html/monoids/src/Data-Group.html 1 + + + + +Data/Group.hs + + + +
module Data.Group 
+    ( module Data.Monoid.Additive
+    , Group
+    , gnegate
+    , minus
+    ) where
+
+import Data.Monoid.Additive
+
+infixl 6 `minus`
+
+class Monoid a => Group a where
+    -- additive inverse
+    gnegate :: a -> a
+
+    -- right cancellation
+    minus :: a -> a -> a
+    a `minus` b = a `plus` gnegate b 
+
+instance Num a => Group (Sum a) where
+    gnegate = Sum . negate . getSum
+    Sum a `minus` Sum b = Sum (a - b)
+    
+instance Fractional a => Group (Product a) where
+    gnegate = Product . negate . getProduct
+    Product a `minus` Product b = Product (a / b)
+    
+instance Group a => Group (Dual a) where
+    gnegate = Dual . gnegate . getDual
+
+ addfile ./dist/doc/html/monoids/src/Data-Monoid-Additive-Sugar.html hunk ./dist/doc/html/monoids/src/Data-Monoid-Additive-Sugar.html 1 + + + + +Data/Monoid/Additive/Sugar.hs + + + +
module Data.Monoid.Additive.Sugar 
+    ( module Data.Monoid.Additive
+    , (+)
+    ) where
+
+import Data.Monoid.Additive
+import Prelude hiding ((+))
+
+infixl 6 + 
+
+(+) :: Monoid m => m -> m -> m 
+(+) = mappend
+
+ addfile ./dist/doc/html/monoids/src/Data-Monoid-Additive.html hunk ./dist/doc/html/monoids/src/Data-Monoid-Additive.html 1 + + + + +Data/Monoid/Additive.hs + + + +
module Data.Monoid.Additive
+    ( module Data.Monoid 
+    , plus
+    , zero
+    ) where
+
+import Data.Monoid
+
+infixl 6 `plus`
+
+plus :: Monoid m => m -> m -> m 
+plus = mappend
+
+zero :: Monoid m => m 
+zero = mempty
+
+ addfile ./dist/doc/html/monoids/src/Data-Monoid-Applicative.html hunk ./dist/doc/html/monoids/src/Data-Monoid-Applicative.html 1 + + + + +Data/Monoid/Applicative.hs + + + +
{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, GeneralizedNewtypeDeriving, FlexibleContexts #-}
+module Data.Monoid.Applicative 
+    ( module Control.Applicative
+    , module Data.Monoid.Reducer
+    , Traversal(Traversal,getTraversal)
+    , Alternate(Alternate,getAlternate)
+    , TraversalWith(TraversalWith,getTraversalWith)
+    ) where
+
+import Control.Applicative (Applicative, (*>), pure, Alternative, empty, (<|>), liftA2)
+import Data.Monoid.Reducer
+
+newtype Traversal f = Traversal { getTraversal :: f () } 
+
+instance Applicative f => Monoid (Traversal f) where
+    mempty = Traversal (pure ())
+    Traversal a `mappend` Traversal b = Traversal (a *> b)
+
+instance Applicative f => Reducer (f a) (Traversal f) where
+    unit a = Traversal (a *> pure ())
+    a `cons` Traversal b = Traversal (a *> b)
+    Traversal a `snoc` b = Traversal (a *> b *> pure ())
+
+{-# RULES "unitTraversal" unit = Traversal #-}
+{-# RULES "snocTraversal" snoc = snocTraversal #-}
+snocTraversal :: Reducer (f ()) (Traversal f) => Traversal f -> f () -> Traversal f
+snocTraversal a = mappend a . Traversal
+
+newtype Alternate f a = Alternate { getAlternate :: f a } 
+    deriving (Eq,Ord,Show,Read,Functor,Applicative,Alternative)
+
+instance Alternative f => Monoid (Alternate f a) where
+    mempty = empty 
+    Alternate a `mappend` Alternate b = Alternate (a <|> b) 
+
+instance Alternative f => Reducer (f a) (Alternate f a) where
+    unit = Alternate
+    a `cons` Alternate b = Alternate (a <|> b) 
+    Alternate a `snoc` b = Alternate (a <|> b)
+
+newtype TraversalWith m n = TraversalWith { getTraversalWith :: m n }
+
+instance (Applicative m, Monoid n) => Monoid (TraversalWith m n) where
+    mempty = TraversalWith (pure mempty)
+    TraversalWith a `mappend` TraversalWith b = TraversalWith (liftA2 mappend a b)
+
+instance (Applicative m, Monoid n) => Reducer (m n) (TraversalWith m n) where
+    unit = TraversalWith
+
+
+ addfile ./dist/doc/html/monoids/src/Data-Monoid-Categorical.html hunk ./dist/doc/html/monoids/src/Data-Monoid-Categorical.html 1 + + + + +Data/Monoid/Categorical.hs + + + +
{-# LANGUAGE TypeOperators, GADTs #-}
+module Data.Monoid.Categorical
+    ( module Data.Monoid
+    , Endo(Endo, getEndo)
+    ) where
+
+import Prelude hiding ((.),id)
+import Data.Monoid (Monoid, mempty, mappend) 
+import Control.Category
+
+-- | The 'Monoid' of endomorphisms over some object in an arbitrary 'Category'
+data Endo (~>) a = Endo { getEndo :: a ~> a } 
+
+instance Category (~>) => Monoid (Endo (~>) a) where
+    mempty = Endo id
+    Endo f `mappend` Endo g = Endo (f . g)
+
+-- | A 'Monoid' is just a 'Category' with one object. 
+-- try to ignore the phantom type parameter available through 'a'
+data Mon m a b where
+    Mon :: Monoid m => m -> Mon m a a
+
+instance Monoid m => Category (Mon m) where
+    id = Mon mempty
+    Mon a . Mon b = Mon (a `mappend` b)
+
+ addfile ./dist/doc/html/monoids/src/Data-Monoid-Generator-Combinators.html hunk ./dist/doc/html/monoids/src/Data-Monoid-Generator-Combinators.html 1 + + + + +Data/Monoid/Generator/Combinators.hs + + + +
{-# LANGUAGE UndecidableInstances, TypeOperators, FlexibleContexts, MultiParamTypeClasses, FlexibleInstances, TypeFamilies, ScopedTypeVariables #-}
+module Data.Monoid.Generator.Combinators
+    ( module Data.Monoid.Generator
+    , traverse_
+    , for_
+    , mapM_
+    , forM_
+    , concatMap
+    , and
+    , or
+    , any
+    , all
+    , sum
+    , product
+    , elem
+    , notElem
+    ) where
+
+import Prelude hiding (mapM_, any, elem, filter, concatMap, and, or, all, sum, product, notElem)
+import Data.Monoid.Generator
+import Data.Monoid.Applicative
+import Data.Monoid.Monad
+import Data.Monoid.Self
+
+traverse_ :: (Generator c, Applicative f) => (Elem c -> f b) -> c -> f ()
+traverse_ f = getTraversal . mapReduce f
+    
+for_ :: (Generator c, Applicative f) => c -> (Elem c -> f b) -> f ()
+for_ = flip traverse_
+
+mapM_ :: (Generator c, Monad m) => (Elem c -> m b) -> c -> m ()
+mapM_ f = getAction . mapReduce f
+
+forM_ :: (Generator c, Monad m) => c -> (Elem c -> m b) -> m ()
+forM_ = flip mapM_
+
+concatMap :: Generator c => (Elem c -> [b]) -> c -> [b]
+concatMap f = getSelf . mapReduce f
+
+and :: (Generator c, Elem c ~ Bool) => c -> Bool
+and = getAll . reduce
+
+or :: (Generator c, Elem c ~ Bool) => c -> Bool
+or = getAny . reduce
+
+any :: Generator c => (Elem c -> Bool) -> c -> Bool
+any f = getAny . mapReduce f
+
+all :: Generator c => (Elem c -> Bool) -> c -> Bool
+all f = getAll . mapReduce f
+
+sum :: (Generator c, Num (Elem c)) => c -> Elem c
+sum = getSum . reduce
+
+product :: (Generator c, Num (Elem c)) => c -> Elem c
+product = getProduct . reduce
+
+elem :: (Generator c, Eq (Elem c)) => Elem c -> c -> Bool
+elem = any . (==)
+
+notElem :: (Generator c, Eq (Elem c)) => Elem c -> c -> Bool
+notElem x = not . elem x
+
+-- foldMap :: Generator c => (Elem c -> m) -> c -> m
+
+-- filter :: (Generator c, Elem c `Reducer` m, m `Reducer` m) => (Elem c -> Bool) -> c -> m
+-- filter p = mapReduce (\x -> if p x then unit x else mempty)
+
+-- find :: Generator c => (Elem c -> Bool) -> c -> Maybe (Elem c)
+-- find p = getFirst . filter p
+
+ addfile ./dist/doc/html/monoids/src/Data-Monoid-Generator.html hunk ./dist/doc/html/monoids/src/Data-Monoid-Generator.html 1 + + + + +Data/Monoid/Generator.hs + + + +
{-# LANGUAGE UndecidableInstances, TypeOperators, FlexibleContexts, MultiParamTypeClasses, FlexibleInstances, TypeFamilies #-}
+module Data.Monoid.Generator
+    ( module Data.Monoid.Reducer
+    , Generator
+    , Elem
+    , mapReduce
+    , mapTo
+    , mapFrom
+    , reduce
+    ) where
+
+import Data.Word (Word8)
+import Data.Text (Text)
+import Data.Foldable (fold,foldMap)
+import qualified Data.Text as Text
+import qualified Data.ByteString as Strict
+import qualified Data.ByteString.Lazy as Lazy
+import Control.Parallel.Strategies
+import Data.Monoid.Reducer
+
+-- minimal definition mapReduce or affixMapReduce
+class Generator c where
+    type Elem c :: * 
+    mapReduce :: (e `Reducer` m) => (Elem c -> e) -> c -> m
+    mapTo     :: (e `Reducer` m) => (Elem c -> e) -> m -> c -> m 
+    mapFrom   :: (e `Reducer` m) => (Elem c -> e) -> c -> m -> m
+
+    mapReduce f = mapTo f mempty
+    mapTo f m = mappend m . mapReduce f
+    mapFrom f = mappend . mapReduce f
+
+instance Generator Strict.ByteString where
+    type Elem Strict.ByteString = Word8
+    mapTo f = Strict.foldl' (\a -> snoc a . f)
+
+instance Generator Lazy.ByteString where
+    type Elem Lazy.ByteString = Elem Strict.ByteString
+    mapReduce f = fold . parMap rwhnf (mapReduce f) . Lazy.toChunks
+
+instance Generator Text where
+    type Elem Text = Char
+    mapTo f = Text.foldl' (\a -> snoc a . f)
+
+instance Generator [c] where
+    type Elem [c] = c
+    mapReduce f = foldMap (unit . f)
+
+{-# 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 :: (Generator c, Elem c `Reducer` m) => c -> m
+reduce = mapReduce id
+
+ addfile ./dist/doc/html/monoids/src/Data-Monoid-IntMap.html hunk ./dist/doc/html/monoids/src/Data-Monoid-IntMap.html 1 + + + + +Data/Monoid/IntMap.hs + + + +
{-# LANGUAGE MultiParamTypeClasses #-}
+module Data.Monoid.IntMap 
+    ( module Data.Monoid.Reducer
+    , Union(getUnion)
+    , UnionWith(getUnionWith)
+    ) where
+
+import Data.Monoid.Reducer (Reducer, unit, cons, snoc, Monoid, mappend, mempty)
+import Data.IntMap
+
+newtype Union a = Union { getUnion :: IntMap a } 
+
+instance Monoid (Union a) where
+    mempty = Union empty
+    Union a `mappend` Union b = Union (a `union` b)
+
+instance Reducer (IntMap a) (Union a) where
+    unit = Union
+
+-- only needs m to be a semigroup, but Haskell doesn't have a semigroup class
+
+newtype UnionWith m = UnionWith { getUnionWith :: IntMap m } 
+
+instance Monoid m => Monoid (UnionWith m) where
+    mempty = UnionWith empty
+    UnionWith a `mappend` UnionWith b = UnionWith (unionWith mappend a b)
+
+instance Monoid m => Reducer (IntMap m) (UnionWith m) where
+    unit = UnionWith
+
+ addfile ./dist/doc/html/monoids/src/Data-Monoid-Lexical-SourcePosition.html hunk ./dist/doc/html/monoids/src/Data-Monoid-Lexical-SourcePosition.html 1 + + + + +Data/Monoid/Lexical/SourcePosition.hs + + + +
{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-}
+module Data.Monoid.Lexical.SourcePosition
+    ( module Data.Monoid.Reducer.Char
+    , SourcePosition
+    , SourceLine
+    , SourceColumn
+    , sourceLine
+    , sourceColumn
+    , startOfFile
+    , showSourcePosition
+    ) where
+
+import Prelude hiding (lex)
+import Control.Functor.Extras
+import Control.Functor.Pointed
+import Data.Monoid.Reducer.Char
+
+type SourceLine = Int
+type SourceColumn = Int
+
+data SourcePosition file = Pos file {-# UNPACK #-} !SourceLine !SourceColumn
+         | Lines {-# UNPACK #-} !SourceLine !SourceColumn
+         | Columns {-# UNPACK #-} !SourceColumn
+         | Tab {-# UNPACK #-} !SourceColumn !SourceColumn -- cols before and after an unresolved tab
+    deriving (Read,Show,Eq)
+
+nextTab :: Int -> Int
+nextTab x = x + (8 - (x-1) `mod` 8)
+
+instance Functor SourcePosition where
+    fmap g (Pos f l c) = Pos (g f) l c
+    fmap _ (Lines l c) = Lines l c
+    fmap _ (Columns c) = Columns c
+    fmap _ (Tab x y) = Tab x y
+
+instance Pointed SourcePosition where
+    point f = Pos f 1 1
+
+instance FunctorZero SourcePosition where
+    fzero = mempty
+
+instance FunctorPlus SourcePosition where
+    fplus = mappend
+
+instance Monoid (SourcePosition file) where
+    mempty = Columns 0
+
+    Pos f l _ `mappend` Lines m d = Pos f (l + m) d
+    Pos f l c `mappend` Columns d = Pos f l (c + d)
+    Pos f l c `mappend` Tab x y   = Pos f l (nextTab (c + x) + y)
+    Lines l _ `mappend` Lines m d = Lines (l + m) d
+    Lines l c `mappend` Columns d = Lines l (c + d)
+    Lines l c `mappend` Tab x y   = Lines l (nextTab (c + x) + y)
+    Columns c `mappend` Columns d  = Columns (c + d)
+    Columns c `mappend` Tab x y    = Tab (c + x) y
+    Tab _ _   `mappend` Lines m d  = Lines m d
+    Tab x y   `mappend` Columns d  = Tab x (y + d)
+    Tab x y   `mappend` Tab x' y'  = Tab x (nextTab (y + x') + y')
+    _         `mappend` pos        = pos
+
+instance Reducer Char (SourcePosition file) where
+    unit '\n' = Lines 1 1
+    unit '\t' = Tab 0 0 
+    unit _    = Columns 1
+
+instance CharReducer (SourcePosition file)
+    
+startOfFile :: f -> SourcePosition f
+startOfFile = point
+
+sourceColumn :: SourcePosition f -> Maybe SourceColumn
+sourceColumn (Pos _ _ c) = Just c
+sourceColumn (Lines _ c) = Just c
+sourceColumn _ = Nothing
+
+sourceLine :: SourcePosition f -> Maybe SourceLine
+sourceLine (Pos _ l _) = Just l
+sourceLine _ = Nothing
+
+showSourcePosition :: SourcePosition String -> String
+showSourcePosition pos = showSourcePosition' (point "-" `mappend` pos) where
+    showSourcePosition' (Pos f l c) = f ++ ":" ++ show l ++ ":" ++ show c
+    showSourcePosition' _ = undefined
+
+ addfile ./dist/doc/html/monoids/src/Data-Monoid-Lexical-UTF8-Decoder.html hunk ./dist/doc/html/monoids/src/Data-Monoid-Lexical-UTF8-Decoder.html 1 + + + + +Data/Monoid/Lexical/UTF8/Decoder.hs + + + +
{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-}
+module Data.Monoid.Lexical.UTF8.Decoder 
+    ( module Data.Monoid.Reducer.Char
+    , UTF8
+    , runUTF8
+    ) where
+    
+import Data.Bits (shiftL,(.&.),(.|.))
+import Data.Word (Word8)
+
+import Control.Functor.Pointed
+
+import Data.Monoid.Reducer.Char
+
+-- Incrementally reduce canonical RFC3629 UTF-8 Characters
+
+-- utf8 characters are at most 4 characters long, so we need only retain state for 3 of them
+-- moreover their length is able to be determined a priori, so lets store that intrinsically in the constructor
+data H = H0
+       | H2_1 {-# UNPACK #-} !Word8 
+       | H3_1 {-# UNPACK #-} !Word8
+       | H3_2 {-# UNPACK #-} !Word8 !Word8
+       | H4_1 {-# UNPACK #-} !Word8
+       | H4_2 {-# UNPACK #-} !Word8 !Word8
+       | H4_3 {-# UNPACK #-} !Word8 !Word8 !Word8
+
+-- words expressing the tail of a character, each between 0x80 and 0xbf
+-- this is arbitrary length to simplify making the parser truly monoidal
+-- this probably means we have O(n^2) worst case performance in the face of very long runs of chars that look like 10xxxxxx
+type T = [Word8]
+
+-- S is a segment that contains a possible tail of a character, the result of reducing some full characters, and the start of another character
+-- T contains a list of bytes each between 0x80 and 0xbf
+data UTF8 m = S T m !H
+            | T T
+
+-- flush any extra characters in a head, when the next character isn't between 0x80 and 0xbf
+flushH :: CharReducer m => H -> m
+flushH (H0) = mempty
+flushH (H2_1 x) = invalidChar [x]
+flushH (H3_1 x) = invalidChar [x]
+flushH (H3_2 x y) = invalidChar [x,y]
+flushH (H4_1 x) = invalidChar [x]
+flushH (H4_2 x y) = invalidChar [x,y]
+flushH (H4_3 x y z) = invalidChar [x,y,z]
+
+-- flush a character tail 
+flushT :: CharReducer m => [Word8] -> m
+flushT = invalidChar
+
+snocH :: CharReducer m => H -> Word8 -> (m -> H -> UTF8 m) -> m -> UTF8 m
+snocH H0 c k m 
+    | c < 0x80 = k (m `mappend` b1 c) H0
+    | c < 0xc0 = k (m `mappend` invalidChar [c]) H0
+    | c < 0xe0 = k m (H2_1 c)
+    | c < 0xf0 = k m (H3_1 c)
+    | c < 0xf5 = k m (H4_1 c)
+    | otherwise = k (m `mappend` invalidChar [c]) H0
+snocH (H2_1 c) d k m
+    | d >= 0x80 && d < 0xc0 = k (m `mappend` b2 c d) H0
+    | otherwise = k (m `mappend` invalidChar [c]) H0
+snocH (H3_1 c) d k m 
+    | d >= 0x80 && d < 0xc0 = k m (H3_2 c d)
+    | otherwise = k (m `mappend` invalidChar [c]) H0
+snocH (H3_2 c d) e k m 
+    | d >= 0x80 && d < 0xc0 = k (m `mappend` b3 c d e) H0
+    | otherwise = k (m `mappend` invalidChar [c,d]) H0
+snocH (H4_1 c) d k m 
+    | d >= 0x80 && d < 0xc0 = k m (H4_2 c d)
+    | otherwise = k (m `mappend` invalidChar [c,d]) H0
+snocH (H4_2 c d) e k m 
+    | d >= 0x80 && d < 0xc0 = k m (H4_3 c d e)
+    | otherwise = k (m `mappend` invalidChar [c,d,e]) H0
+snocH (H4_3 c d e) f k m 
+    | d >= 0x80 && d < 0xc0 = k (m `mappend` b4 c d e f) H0
+    | otherwise = k (m `mappend` invalidChar [c,d,e,f]) H0
+
+mask :: Word8 -> Word8 -> Int
+mask c m = fromEnum (c .&. m) 
+
+combine :: Int -> Word8 -> Int
+combine a r = shiftL a 6 .|. fromEnum (r .&. 0x3f)
+
+b1 :: CharReducer m => Word8 -> m
+b1 c | c < 0x80 = fromChar . toEnum $ fromEnum c
+     | otherwise = invalidChar [c]
+
+b2 :: CharReducer m => Word8 -> Word8 -> m
+b2 c d | valid_b2 c d = fromChar (toEnum (combine (mask c 0x1f) d))
+       | otherwise = invalidChar [c,d]
+
+b3 :: CharReducer m => Word8 -> Word8 -> Word8 -> m
+b3 c d e | valid_b3 c d e = fromChar (toEnum (combine (combine (mask c 0x0f) d) e))
+         | otherwise = invalidChar [c,d,e]
+
+
+b4 :: CharReducer m => Word8 -> Word8 -> Word8 -> Word8 -> m
+b4 c d e f | valid_b4 c d e f = fromChar (toEnum (combine (combine (combine (mask c 0x07) d) e) f))
+           | otherwise = invalidChar [c,d,e,f]
+
+valid_b2 :: Word8 -> Word8 -> Bool
+valid_b2 c d = (c >= 0xc2 && c <= 0xdf && d >= 0x80 && d <= 0xbf)
+
+valid_b3 :: Word8 -> Word8 -> Word8 -> Bool
+valid_b3 c d e = (c == 0xe0 && d >= 0xa0 && d <= 0xbf && e >= 0x80 && e <= 0xbf) || 
+                 (c >= 0xe1 && c <= 0xef && d >= 0x80 && d <= 0xbf && e >= 0x80 && e <= 0xbf)
+
+valid_b4 :: Word8 -> Word8 -> Word8 -> Word8 -> Bool
+valid_b4 c d e f = (c == 0xf0 && d >= 0x90 && d <= 0xbf && e >= 0x80 && e <= 0xbf && f >= 0x80 && f <= 0xbf) ||
+      (c >= 0xf1 && c <= 0xf3 && d >= 0x80 && d <= 0xbf && e >= 0x80 && e <= 0xbf && f >= 0x80 && f <= 0xbf) ||
+                   (c == 0xf4 && d >= 0x80 && d <= 0x8f && e >= 0x80 && e <= 0xbf && f >= 0x80 && f <= 0xbf)
+
+consT :: CharReducer m => Word8 -> T -> (H -> UTF8 m) -> (m -> UTF8 m) -> (T -> UTF8 m) -> UTF8 m
+consT c cs h m t
+             | c < 0x80 = m $ b1 c `mappend` invalidChars cs
+             | c < 0xc0 = t (c:cs)
+             | c < 0xe0 = case cs of
+                        [] -> h $ H2_1 c
+                        (d:ds) -> m $ b2 c d `mappend` invalidChars ds
+             | c < 0xf0 = case cs of
+                        [] -> h $ H3_1 c
+                        [d] -> h $ H3_2 c d
+                        (d:e:es) -> m $ b3 c d e `mappend` invalidChars es
+             | c < 0xf5 = case cs of
+                        [] -> h $ H4_1 c
+                        [d] -> h $ H4_2 c d 
+                        [d,e] -> h $ H4_3 c d e 
+                        (d:e:f:fs) -> m $ b4 c d e f `mappend` invalidChars fs
+             | otherwise = mempty
+
+invalidChars :: CharReducer m => [Word8] -> m
+invalidChars = foldr (mappend . invalidChar . return) mempty
+
+merge :: CharReducer m => H -> T -> (m -> a) -> (H -> a) -> a
+merge H0 cs k _               = k $ invalidChars cs
+merge (H2_1 c) [] _ p         = p $ H2_1 c
+merge (H2_1 c) (d:ds) k _     = k $ b2 c d `mappend` invalidChars ds
+merge (H3_1 c) [] _ p         = p $ H3_1 c
+merge (H3_1 c) [d] _ p        = p $ H3_2 c d
+merge (H3_1 c) (d:e:es) k _   = k $ b3 c d e `mappend` invalidChars es
+merge (H3_2 c d) [] _ p       = p $ H3_2 c d
+merge (H3_2 c d) (e:es) k _   = k $ b3 c d e `mappend` invalidChars es
+merge (H4_1 c) [] _ p         = p $ H4_1 c
+merge (H4_1 c) [d] _ p        = p $ H4_2 c d
+merge (H4_1 c) [d,e] _ p      = p $ H4_3 c d e
+merge (H4_1 c) (d:e:f:fs) k _ = k $ b4 c d e f `mappend` invalidChars fs
+merge (H4_2 c d) [] _ p       = p $ H4_2 c d 
+merge (H4_2 c d) [e] _ p      = p $ H4_3 c d e
+merge (H4_2 c d) (e:f:fs) k _ = k $ b4 c d e f `mappend` invalidChars fs
+merge (H4_3 c d e) [] _ p     = p $ H4_3 c d e
+merge (H4_3 c d e) (f:fs) k _ = k $ b4 c d e f `mappend` invalidChars fs
+
+instance CharReducer m => Monoid (UTF8 m) where
+    mempty = T []
+    T c `mappend` T d = T (c ++ d)
+    T c `mappend` S l m r = S (c ++ l) m r
+    S l m c `mappend` S c' m' r = S l (m `mappend` merge c c' id flushH `mappend` m') r
+    s@(S _ _ _) `mappend` T [] = s
+    S l m c `mappend` T c' = merge c c' k (S l m) where
+        k m' = S l (m `mappend` m') H0
+
+instance CharReducer m => Reducer Word8 (UTF8 m) where
+    unit c | c >= 0x80 && c < 0xc0 = T [c]
+           | otherwise = snocH H0 c (S []) mempty
+    S t m h `snoc` c        = snocH h c (S t) m
+    T t     `snoc` c        | c >= 0x80 && c < 0xc0 = T (t ++ [c])
+                            | otherwise = snocH H0 c (S t) mempty
+
+    c       `cons` T cs     = consT c cs (S [] mempty) (flip (S []) H0) T
+    c       `cons` S cs m h = consT c cs k1 k2 k3 where
+        k1 h' = S [] (flushH h' `mappend` m) h
+        k2 m' = S [] (m' `mappend` m) h
+        k3 t' = S t' m h
+    
+instance Functor UTF8 where
+    fmap f (S t x h) = S t (f x) h
+    fmap _ (T t) = T t
+
+instance Pointed UTF8 where
+    point f = S [] f H0
+
+runUTF8 :: CharReducer m => UTF8 m -> m 
+runUTF8 (T t) = flushT t
+runUTF8 (S t m h) = flushT t `mappend` m `mappend` flushH h
+
+ addfile ./dist/doc/html/monoids/src/Data-Monoid-Lexical-Words.html hunk ./dist/doc/html/monoids/src/Data-Monoid-Lexical-Words.html 1 + + + + +Data/Monoid/Lexical/Words.hs + + + +
{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, FlexibleContexts, GeneralizedNewtypeDeriving, ParallelListComp, TypeFamilies #-}
+module Data.Monoid.Lexical.Words 
+    ( module Data.Monoid.Reducer.Char
+    , Words
+    , runWords
+    , Lines
+    , runLines
+    , Unspaced(runUnspaced)
+    , Unlined(runUnlined)
+    , wordsFrom
+    , linesFrom
+    ) where
+
+import Data.Char (isSpace)
+import Data.Maybe (maybeToList)
+import Data.Monoid.Reducer.Char
+import Data.Monoid.Generator
+import Control.Functor.Pointed
+
+data Words m = Chunk (Maybe m)
+             | Segment (Maybe m) [m] (Maybe m)
+    deriving (Show,Read)
+
+runWords :: Words m -> [m]
+runWords (Chunk m) = maybeToList m
+runWords (Segment l m r) = maybeToList l ++ m ++ maybeToList r
+
+instance Monoid m => Monoid (Words m) where
+    mempty = Chunk mempty
+    Chunk l `mappend` Chunk r = Chunk (l `mappend` r)
+    Chunk l `mappend` Segment l' m r = Segment (l `mappend` l') m r
+    Segment l m r `mappend` Chunk r' = Segment l m (r `mappend` r')
+    Segment l m r `mappend` Segment l' m' r' = Segment l (m ++ maybeToList (r `mappend` l') ++ m') r'
+
+instance Reducer Char m => Reducer Char (Words m) where
+    unit c | isSpace c = Segment (Just (unit c)) [] mempty
+           | otherwise = Chunk (Just (unit c))
+
+instance Functor Words where
+    fmap f (Chunk m) = Chunk (fmap f m)
+    fmap f (Segment m ms m') = Segment (fmap f m) (fmap f ms) (fmap f m')
+
+-- abuse the same machinery to handle lines as well
+
+newtype Lines m = Lines (Words m) deriving (Show,Read,Monoid,Functor)
+
+instance Reducer Char m => Reducer Char (Lines m) where
+    unit '\n' = Lines $ Segment (Just (unit '\n')) [] mempty
+    unit c = Lines $ Chunk (Just (unit c))
+
+runLines :: Lines m -> [m]
+runLines (Lines x) = runWords x
+
+newtype Unspaced m = Unspaced { runUnspaced :: m }  deriving (Eq,Ord,Show,Read,Monoid)
+
+instance Reducer Char m => Reducer Char (Unspaced m) where
+    unit c | isSpace c = mempty
+           | otherwise = Unspaced (unit c)
+
+instance CharReducer m => CharReducer (Unspaced m) where
+    invalidChar = Unspaced . invalidChar
+
+instance Functor Unspaced where
+    fmap f (Unspaced x) = Unspaced (f x)
+
+instance Pointed Unspaced where
+    point = Unspaced
+
+instance Copointed Unspaced where
+    extract = runUnspaced
+
+newtype Unlined m = Unlined { runUnlined :: m }  deriving (Eq,Ord,Show,Read,Monoid)
+
+instance Reducer Char m => Reducer Char (Unlined m) where
+    unit '\n' = mempty
+    unit c = Unlined (unit c)
+
+instance CharReducer m => CharReducer (Unlined m) where
+    invalidChar = Unlined . invalidChar
+
+instance Functor Unlined where
+    fmap f (Unlined x) = Unlined (f x)
+
+instance Pointed Unlined where
+    point = Unlined
+
+instance Copointed Unlined where
+    extract = runUnlined
+
+-- accumulator, inside-word, and until-next-word monoids
+wordsFrom :: (Generator c, Elem c ~ Char, Char `Reducer` m, Char `Reducer` n, Char `Reducer` o) => m -> c -> [(m,n,o)]
+wordsFrom s c = [(x,runUnlined y,z) | x <- scanl mappend s ls | (y,z) <- rs ] where
+    (ls,rs) = unzip (runWords (mapReduce id c))
+
+-- accumulator, inside-line, and until-next-line monoids
+linesFrom :: (Generator c, Elem c ~ Char, Char `Reducer` m, Char `Reducer` n, Char `Reducer` o) => m -> c -> [(m,n,o)]
+linesFrom s c = [(x,runUnlined y,z) | x <- scanl mappend s ls | (y,z) <- rs ] where
+    (ls,rs) = unzip (runLines (mapReduce id c))
+
+ addfile ./dist/doc/html/monoids/src/Data-Monoid-Map.html hunk ./dist/doc/html/monoids/src/Data-Monoid-Map.html 1 + + + + +Data/Monoid/Map.hs + + + +
{-# LANGUAGE MultiParamTypeClasses #-}
+module Data.Monoid.Map 
+    ( module Data.Monoid.Reducer
+    , Union(getUnion)
+    , UnionWith(getUnionWith)
+    ) where
+
+import Prelude (Ord)
+import Data.Monoid.Reducer (Reducer, unit, cons, snoc, Monoid, mempty, mappend)
+import Data.Map
+
+newtype Union k a = Union { getUnion :: Map k a } 
+
+instance Ord k => Monoid (Union k a) where
+    mempty = Union empty
+    Union a `mappend` Union b = Union (a `union` b)
+
+instance Ord k => Reducer (Map k a) (Union k a) where
+    unit = Union
+
+-- only needs m to be a semigroup, but Haskell doesn't have a semigroup class
+
+newtype UnionWith k m = UnionWith { getUnionWith :: Map k m } 
+
+instance (Ord k, Monoid m) => Monoid (UnionWith k m) where
+    mempty = UnionWith empty
+    UnionWith a `mappend` UnionWith b = UnionWith (unionWith mappend a b)
+
+instance (Ord k, Monoid m) => Reducer (Map k m) (UnionWith k m) where
+    unit = UnionWith
+
+ addfile ./dist/doc/html/monoids/src/Data-Monoid-Monad.html hunk ./dist/doc/html/monoids/src/Data-Monoid-Monad.html 1 + + + + +Data/Monoid/Monad.hs + + + +
{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, GeneralizedNewtypeDeriving, FlexibleContexts #-}
+module Data.Monoid.Monad 
+    ( module Control.Monad
+    , module Data.Monoid.Reducer
+    , Action(Action,getAction)
+    , MonadSum(MonadSum,getMonadSum)
+    , ActionWith(ActionWith,getActionWith)
+    ) where
+
+import Data.Monoid.Reducer
+import Control.Monad (MonadPlus, mplus, mzero, (>=>), liftM2)
+
+newtype Action m = Action { getAction :: m () } 
+
+instance Monad m => Monoid (Action m) where
+    mempty = Action (return ())
+    Action a `mappend` Action b = Action (a >> b)
+
+instance Monad m => Reducer (m a) (Action m) where
+    unit a = Action (a >> return ())
+    a `cons` Action b = Action (a >> b)
+    Action a `snoc` b = Action (a >> b >> return ())
+
+{-# RULES "unitAction" unit = Action #-}
+{-# RULES "snocAction" snoc = snocAction #-} 
+snocAction :: Reducer (m ()) (Action m) => Action m -> m () -> Action m
+snocAction a = mappend a . Action
+
+newtype MonadSum m a = MonadSum { getMonadSum :: m a } 
+    deriving (Eq,Ord,Show,Read,Functor,Monad,MonadPlus)
+
+instance MonadPlus m => Monoid (MonadSum m a) where
+    mempty = MonadSum mzero
+    MonadSum a `mappend` MonadSum b = MonadSum (a `mplus` b)
+
+instance MonadPlus m => Reducer (m a) (MonadSum m a) where
+    unit = MonadSum
+
+newtype ActionWith m n = ActionWith { getActionWith :: m n }
+
+instance (Monad m, Monoid n) => Monoid (ActionWith m n) where
+    mempty = ActionWith (return mempty)
+    ActionWith a `mappend` ActionWith b = ActionWith (liftM2 mappend a b)
+
+instance (Monad m, Monoid n) => Reducer (m n) (ActionWith m n) where
+    unit = ActionWith
+
+ addfile ./dist/doc/html/monoids/src/Data-Monoid-Multiplicative-Sugar.html hunk ./dist/doc/html/monoids/src/Data-Monoid-Multiplicative-Sugar.html 1 + + + + +Data/Monoid/Multiplicative/Sugar.hs + + + +
module Data.Monoid.Multiplicative.Sugar
+    ( module Data.Monoid.Additive.Sugar
+    , module Data.Monoid.Multiplicative
+    , (*)
+    ) where
+
+import Data.Monoid.Additive.Sugar
+import Data.Monoid.Multiplicative
+import Prelude hiding ((*))
+
+infixl 7 *
+
+(*) :: MultiplicativeMonoid r => r -> r -> r
+(*) = times
+
+ addfile ./dist/doc/html/monoids/src/Data-Monoid-Multiplicative-Transformers.html hunk ./dist/doc/html/monoids/src/Data-Monoid-Multiplicative-Transformers.html 1 + + + + +Data/Monoid/Multiplicative/Transformers.hs + + + +
module Data.Monoid.Multiplicative.Transformers
+    ( module Data.Monoid.Multiplicative
+    , Log(Log, getLog)
+    , Exp(Exp, getExp) 
+    ) where
+
+import Data.Monoid.Multiplicative
+
+data Log m = Log { getLog :: m }
+
+instance MultiplicativeMonoid m => Monoid (Log m) where
+    mempty = Log one
+    Log a `mappend` Log b = Log (a `times` b)
+
+data Exp m = Exp { getExp :: m }
+
+instance Monoid m => MultiplicativeMonoid (Exp m) where
+    one = Exp mempty
+    Exp a `times` Exp b = Exp (a `mappend` b)
+
+ addfile ./dist/doc/html/monoids/src/Data-Monoid-Multiplicative.html hunk ./dist/doc/html/monoids/src/Data-Monoid-Multiplicative.html 1 + + + + +Data/Monoid/Multiplicative.hs + + + +
module Data.Monoid.Multiplicative 
+    ( module Data.Monoid.Additive
+    , MultiplicativeMonoid
+    , one, times
+    ) where
+
+import Data.Monoid.Additive
+import Data.FingerTree
+import Data.Monoid.Reducer
+import Data.Monoid.Generator
+import Data.Monoid.Self
+import Data.Foldable
+
+class MultiplicativeMonoid m where
+    one :: m
+    times :: m -> m -> m
+
+class (MultiplicativeMonoid m, Monoid m) => Seminearring m 
+
+instance Monoid m => MultiplicativeMonoid [m] where
+    one = [mempty]
+    xss `times` yss = [ xs `mappend` ys | xs <- xss, ys <- yss ]
+
+instance Monoid m => Seminearring [m]
+
+instance (Measured v m, Monoid m) => MultiplicativeMonoid (FingerTree v m) where
+    one = singleton mempty
+    xss `times` yss = getSelf . reduce . fmap (\xs -> fmap' (xs `mappend`) yss) $ toList xss
+
+instance (Measured v m, Monoid m) => Seminearring (FingerTree v m)
+
+ addfile ./dist/doc/html/monoids/src/Data-Monoid-Ord.html hunk ./dist/doc/html/monoids/src/Data-Monoid-Ord.html 1 + + + + +Data/Monoid/Ord.hs + + + +
{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-}
+-----------------------------------------------------------------------------
+---- |
+---- Module      :  Data.Monoid.Ord
+---- Copyright   :  (c) Edward Kmett 2009
+---- License     :  BSD-style
+---- Maintainer  :  libraries@haskell.org
+---- Stability   :  experimental
+---- Portability :  portable
+----
+---- Some 'Monoid' instances that should probably be in "Data.Monoid".
+----
+-----------------------------------------------------------------------------
+
+module Data.Monoid.Ord 
+    ( module Data.Monoid.Reducer
+    -- * Max
+    , Max(Max,getMax)
+    -- * Min
+    , Min(Min,getMin)
+    -- * MaxPriority: Max semigroup w/ added bottom
+    , MaxPriority(MaxPriority,getMaxPriority)
+    -- * MinPriority: Min semigroup w/ added top
+    , MinPriority(MinPriority,getMinPriority)
+    ) where
+
+import Control.Functor.Pointed
+import Data.Monoid.Reducer (Reducer, unit, Monoid, mappend, mempty)
+
+
+-- | The 'Monoid' @('max','minBound')@
+newtype Max a = Max { getMax :: a } deriving (Eq,Ord,Show,Read,Bounded)
+
+instance (Ord a, Bounded a) => Monoid (Max a) where
+    mempty = Max minBound
+    mappend = max
+
+instance (Ord a, Bounded a) => Reducer a (Max a) where
+    unit = Max
+
+instance Functor Max where 
+    fmap f (Max a) = Max (f a)
+
+instance Pointed Max where
+    point = Max
+
+instance Copointed Max where
+    extract = getMax
+
+-- | The 'Monoid' given by @('min','maxBound')@
+newtype Min a = Min { getMin :: a } deriving (Eq,Ord,Show,Read,Bounded)
+
+instance (Ord a, Bounded a) => Monoid (Min a) where
+    mempty = Min maxBound
+    mappend = min
+
+instance (Ord a, Bounded a) => Reducer a (Min a) where
+    unit = Min
+
+instance Functor Min where
+    fmap f (Min a) = Min (f a)
+
+instance Pointed Min where
+    point = Min
+
+instance Copointed Min where
+    extract = getMin
+
+-- | The 'Monoid' @('max','Nothing')@ over @'Maybe' a@ where 'Nothing' is the bottom element
+newtype MaxPriority a = MaxPriority { getMaxPriority :: Maybe a } deriving (Eq,Ord,Show,Read)
+
+instance Ord a => Monoid (MaxPriority a) where
+    mempty = MaxPriority Nothing
+    mappend = max
+
+instance Ord a => Reducer (Maybe a) (MaxPriority a) where
+    unit = MaxPriority
+
+instance Functor MaxPriority where
+    fmap f (MaxPriority a) = MaxPriority (fmap f a)
+
+instance Pointed MaxPriority where
+    point = MaxPriority . Just
+
+-- | The 'Monoid' @('min','Nothing')@ over @'Maybe' a@ where 'Nothing' is the top element
+newtype MinPriority a = MinPriority { getMinPriority :: Maybe a } deriving (Eq,Show,Read)
+
+instance Ord a => Ord (MinPriority a) where
+    MinPriority Nothing  `compare` MinPriority Nothing  = EQ
+    MinPriority Nothing  `compare` _                    = GT
+    _                    `compare` MinPriority Nothing  = LT
+    MinPriority (Just a) `compare` MinPriority (Just b) = a `compare` b
+
+instance Ord a => Monoid (MinPriority a) where
+    mempty = MinPriority Nothing
+    mappend = min
+
+instance Ord a => Reducer (Maybe a) (MinPriority a) where
+    unit = MinPriority
+
+instance Functor MinPriority where
+    fmap f (MinPriority a) = MinPriority (fmap f a)
+
+instance Pointed MinPriority where
+    point = MinPriority . Just
+
+ addfile ./dist/doc/html/monoids/src/Data-Monoid-Reducer-Char.html hunk ./dist/doc/html/monoids/src/Data-Monoid-Reducer-Char.html 1 + + + + +Data/Monoid/Reducer/Char.hs + + + +
{-# LANGUAGE UndecidableInstances, FlexibleContexts, MultiParamTypeClasses, FlexibleInstances #-}
+module Data.Monoid.Reducer.Char
+    ( module Data.Monoid.Reducer
+    , CharReducer
+    , invalidChar
+    , fromChar
+    ) where
+
+import Data.Monoid.Reducer
+import Data.Word (Word8)
+
+class Reducer Char m => CharReducer m where
+    fromChar :: Char -> m 
+    fromChar = unit
+
+    invalidChar :: [Word8] -> m
+    invalidChar = const mempty
+
+instance (CharReducer m, CharReducer m') =>  CharReducer (m,m') where
+    invalidChar bs = (invalidChar bs, invalidChar bs)
+
+instance (CharReducer m, CharReducer m', CharReducer m'') =>  CharReducer (m,m',m'') where
+    invalidChar bs = (invalidChar bs, invalidChar bs, invalidChar bs)
+
+instance (CharReducer m, CharReducer m', CharReducer m'', CharReducer m''') =>  CharReducer (m,m',m'',m''') where
+    invalidChar bs = (invalidChar bs, invalidChar bs, invalidChar bs, invalidChar bs)
+
+instance CharReducer [Char]
+
+ addfile ./dist/doc/html/monoids/src/Data-Monoid-Reducer-Sugar.html hunk ./dist/doc/html/monoids/src/Data-Monoid-Reducer-Sugar.html 1 + + + + +Data/Monoid/Reducer/Sugar.hs + + + +
{-# LANGUAGE FlexibleInstances, FlexibleContexts, UndecidableInstances #-}
+module Data.Monoid.Reducer.Sugar 
+    ( module Data.Monoid.Reducer
+    , fromInteger
+    , IsString, fromString
+    ) where
+
+import Prelude hiding (fromInteger)
+import Data.Monoid.Generator
+import Data.Monoid.Reducer
+
+fromInteger :: Reducer Integer m => Integer -> m
+fromInteger = unit
+
+class IsString a where
+    fromString :: String -> a
+    
+instance Reducer Char a => IsString a where
+    fromString = reduce
+
+ addfile ./dist/doc/html/monoids/src/Data-Monoid-Reducer-With.html hunk ./dist/doc/html/monoids/src/Data-Monoid-Reducer-With.html 1 + + + + +Data/Monoid/Reducer/With.hs + + + +
{-# LANGUAGE UndecidableInstances, TypeOperators, FlexibleContexts, MultiParamTypeClasses, FlexibleInstances #-}
+module Data.Monoid.Reducer.With
+    ( module Data.Monoid.Reducer
+    , WithReducer(WithReducer,runWithReducer)
+    , withoutReducer
+    ) where
+
+import Data.Monoid.Reducer
+import Data.FingerTree
+
+newtype WithReducer c m = WithReducer { runWithReducer :: (m,c) } 
+
+withoutReducer :: c `WithReducer` m -> c
+withoutReducer = snd . runWithReducer
+
+instance (c `Reducer` m) => Reducer (c `WithReducer` m) m where
+    unit = fst . runWithReducer 
+
+instance (c `Reducer` m) => Measured m (c `WithReducer` m) where
+    measure = fst . runWithReducer
+
+ addfile ./dist/doc/html/monoids/src/Data-Monoid-Reducer.html hunk ./dist/doc/html/monoids/src/Data-Monoid-Reducer.html 1 + + + + +Data/Monoid/Reducer.hs + + + +
{-# LANGUAGE UndecidableInstances , FlexibleContexts , MultiParamTypeClasses , FlexibleInstances , GeneralizedNewtypeDeriving , FunctionalDependencies #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+module Data.Monoid.Reducer
+    ( module Data.Monoid
+    , Reducer
+    , unit, snoc, cons
+    , foldMapReduce
+    ) where
+
+import Data.Monoid
+import Data.Foldable
+import Data.FingerTree
+
+-- minimal definition unit or snoc
+class Monoid m => Reducer c m where
+    unit :: c -> m 
+    snoc :: m -> c -> m
+    cons :: c -> m -> m 
+
+    unit = snoc mempty 
+    snoc m = mappend m . unit
+    cons = mappend . unit
+
+foldMapReduce :: (Foldable f, e `Reducer` m) => (a -> e) -> f a -> m
+foldMapReduce f = foldMap (unit . f)
+
+instance (Reducer c m, Reducer c n) => Reducer c (m,n) where
+    unit x = (unit x,unit x)
+    (m,n) `snoc` x = (m `snoc` x, n `snoc` x)
+    x `cons` (m,n) = (x `cons` m, x `cons` n)
+
+instance (Reducer c m, Reducer c n, Reducer c o) => Reducer c (m,n,o) where
+    unit x = (unit x,unit x, unit x)
+    (m,n,o) `snoc` x = (m `snoc` x, n `snoc` x, o `snoc` x)
+    x `cons` (m,n,o) = (x `cons` m, x `cons` n, x `cons` o)
+
+instance (Reducer c m, Reducer c n, Reducer c o, Reducer c p) => Reducer c (m,n,o,p) where
+    unit x = (unit x,unit x, unit x, unit x)
+    (m,n,o,p) `snoc` x = (m `snoc` x, n `snoc` x, o `snoc` x, p `snoc` x)
+    x `cons` (m,n,o,p) = (x `cons` m, x `cons` n, x `cons` o, x `cons` p)
+
+instance Reducer c [c] where
+    unit = return
+    cons = (:)
+    xs `snoc` x = xs ++ [x]
+
+instance Reducer c () where
+    unit _ = ()
+    _ `snoc` _ = ()
+    _ `cons` _ = ()
+
+instance Reducer Bool Any where
+    unit = Any
+
+instance Reducer Bool All where
+    unit = All
+
+instance Reducer (a -> a) (Endo a) where
+    unit = Endo
+
+instance Monoid a => Reducer a (Dual a) where
+    unit = Dual
+    
+instance Num a => Reducer a (Sum a) where
+    unit = Sum
+
+instance Num a => Reducer a (Product a) where
+    unit = Product
+
+instance Reducer (Maybe a) (First a) where
+    unit = First
+
+instance Reducer (Maybe a) (Last a) where
+    unit = Last
+
+instance Measured v a => Monoid (FingerTree v a) where
+    mempty = empty
+    mappend = (><)
+
+instance Measured v a => Reducer a (FingerTree v a) where
+    unit = singleton
+    cons = (<|)
+    snoc = (|>) 
+
+ addfile ./dist/doc/html/monoids/src/Data-Monoid-Self.html hunk ./dist/doc/html/monoids/src/Data-Monoid-Self.html 1 + + + + +Data/Monoid/Self.hs + + + +
{-# LANGUAGE UndecidableInstances, FlexibleContexts, MultiParamTypeClasses, FlexibleInstances, GeneralizedNewtypeDeriving #-}
+module Data.Monoid.Self
+    ( module Data.Monoid.Reducer
+    , Self(Self, getSelf)
+    ) where
+
+import Control.Functor.Pointed
+import Data.Monoid.Reducer
+
+newtype Self m = Self { getSelf :: m } deriving (Monoid)
+
+instance Monoid m => Reducer m (Self m) where
+    unit = Self
+
+instance Functor Self where
+    fmap f = Self . f . getSelf
+
+instance Pointed Self where
+    point = Self
+
+instance Copointed Self where
+    extract = getSelf
+
+ addfile ./dist/doc/html/monoids/src/Data-Monoid-Unit.html hunk ./dist/doc/html/monoids/src/Data-Monoid-Unit.html 1 + + + + +Data/Monoid/Unit.hs + + + +
{-# LANGUAGE FlexibleInstances, FlexibleContexts, UndecidableInstances, MultiParamTypeClasses #-}
+-----------------------------------------------------------------------------
+---- |
+---- Module      :  Data.Monoid.Unit
+---- Copyright   :  (c) Edward Kmett 2009
+---- License     :  BSD-style
+---- Maintainer  :  libraries@haskell.org
+---- Stability   :  experimental
+---- Portability :  portable
+----
+-----------------------------------------------------------------------------
+module Data.Monoid.Unit 
+    ( module Data.Monoid.Reducer
+    , Unit(Unit,getUnit) 
+    ) where
+
+import Control.Functor.Pointed
+import Data.Monoid.Reducer
+import Data.Monoid.Reducer.Char
+
+newtype Unit c = Unit { getUnit :: () } 
+
+instance Monoid (Unit c) where
+    mempty = Unit ()
+    _ `mappend` _ = Unit ()
+    mconcat _ = Unit ()
+
+instance Reducer c (Unit c) where 
+    unit _ = Unit ()
+    cons _ _ = Unit ()
+    snoc _ _ = Unit ()
+
+instance CharReducer (Unit Char)
+
+instance Functor Unit where
+    fmap _ _ = Unit ()
+    
+instance Pointed Unit where
+    point _ = Unit ()
+
+ addfile ./dist/doc/html/monoids/src/hscolour.css hunk ./dist/doc/html/monoids/src/hscolour.css 1 +.hs-keyglyph, .hs-layout {color: red;} +.hs-keyword {color: blue;} +.hs-comment, .hs-comment a {color: green;} +.hs-str, .hs-chr {color: teal;} +.hs-keyword, .hs-conid, .hs-varid, .hs-conop, .hs-varop, .hs-num, .hs-cpp, .hs-sel, .hs-definition {} }