śĪ ~«v†     !"#$%&'()*+,-./0123456789:;<=>?@ABCD E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u vwxyz{|}~non-portable (MPTCs) experimentalekmett@gmail.com$This type may be best read infix. A c  m is a € m that maps  values of type c through unit to values of type m. A c- may also ) supply operations which tack-on another c to an existing € m on the left P or right. These specialized reductions may be more efficient in some scenarios $ and are used when appropriate by a  Generator . The names  and  work = by analogy to the synonymous operations in the list monoid. LThis class deliberately avoids functional-dependencies, so that () can be a c -Reducer  for all cJ, and so many common reducers can work over multiple types, for instance,  First and Last may reduce both a and  a . Since a  Generator has a fixed element Z type, the input to the reducer is generally known and extracting from the monoid usually Z is sufficient to fix the result type. Combinators are available for most scenarios where X this is not the case, and the few remaining cases can be handled by using an explicit  type annotation. Minimal definition:  or  Convert a value into a € Append a value to a €$ for use in left-to-right reduction Prepend a value onto a €( for use during right-to-left reduction Apply a  to a ‚K container, after mapping the contents into a suitable form for reduction. Apply a  to a ‚ mapping each element through  portable experimentalekmett@gmail.com    The € ('unionWith mappend',)! for containers full of monoids. MPolymorphic containers that we can supply an operation to handle unions with The € (,) A Container suitable for the  €     The € (ƒ,„) over  a where „ is the top element The € (…,„) over  a where „ is the bottom element The € given by (ƒ,†) The € (…,‡)  !"#$ !"#$ !"!"#$#non-portable (type families, MPTCs) experimentalekmett@gmail.com%A generalization of Data.List.cycle to an arbitrary €9. May fail to terminate for some values in some monoids. &A generalization of Data.List.repeat to an arbitrary €9. May fail to terminate for some values in some monoids. 'A generalization of Data.List.replicate to an arbitrary €. Adapted from   Jhttp://augustss.blogspot.com/2008/07/lost-and-found-if-i-write-108-in.html %&'&'%%&'portable experimentalekmett@gmail.com()()()portable experimentalekmett@gmail.com*a 3 transformer that treats ˆ as ‰  This lets you use a  ByteString as a ‰ source without going through a € transformer like UTF8 -a 3M transformer that asks only for the values contained in an indexed container 0a 3A transformer that asks only for the keys of an indexed container 3minimal definition 5 or 6 8Apply a  directly to the elements of a 3 *+,-./0123456789:34567012-./*+,89:*+,+,-././0121234567456789:"portable (but instances use MPTCs) experimentalekmett@gmail.com; Convert a € into a A . Mnemonic: Exp a * Exp b = Exp (a + b) > Convert a A into a € . Mnemonic: Log a + Log b = Log (a * b) ;<=>?@ABC ABC>?@;<= ;<=<=>?@?@ABCBC portable experimentalEdward Kmett <ekmett@gmail.com>D"Minimal definition over or grecip E x / yF x  yHMinimal complete definition: I  or J  DEFGHIJKHIJKDEFGDEFGEFGHIJKIJK portable experimentalekmett@gmail.comLLL non-portable (MPTCs) experimentalekmett@gmail.comMif m is a Module over r and f is a Š then f N M  m is a Module over r as well PA Q P  turns any ‹ instance into a €.  It also provides a A instance for an Š functor wrapped around a €  and asserts that any ‹ applied to a € forms a RightSemiNearRing  under these operations. SA T S  uses an glues together Š actions with (*>)  in the manner of  traverse_ from  Data.Foldable. Any values returned by " reduced actions are discarded. V2Efficiently avoid needlessly rebinding when using & on an action that already returns () ; A rewrite rule automatically applies this when possible MNOPQRSTUV STUPQRMNOV MNONOPQRQRSTUTUV non-portable (MPTCs) experimentalekmett@gmail.comWif m is a Module over r and f is a Œ then f X W  m is a Module as well ZA [ Z  turns any  instance into a €.  It also provides a A instance for a Œ wrapped around a €  and asserts that any  applied to a € forms a RightSemiNearRing  under these operations. ]An ^ ]  uses glues together Œ actions with (>>)  in the manner of Ž from  Data.Foldable. Any values returned by " reduced actions are discarded. `2Efficiently avoid needlessly rebinding when using & on an action that already returns () ; A rewrite rule automatically applies this when possible WXYZ[\]^_` ]^_`Z[\WXY WXYXYZ[\[\]^_^_` #non-portable (type families, MPTCs) experimentalekmett@gmail.coma Efficiently 5 a 3 using the T S 4 monoid. A specialized version of its namesake from  Data.Foldable   5 U  b!Convenience function as found in  Data.Foldable    a  c1The sum of a collection of actions, generalizing    : R  d Efficiently 5 a 3 using the ^ ] 4 monoid. A specialized version of its namesake from  Data.Foldable and  Control.Monad   9 _  e!Convenience function as found in  Data.Foldable and  Control.Monad    d  f1The sum of a collection of actions, generalizing    : \  g Efficiently 5 a 3 using the  4 monoid. A specialized version of its namesake from  Data.Foldable   9   hType specialization of foldMap above i Efficiently 8 a 3 using the  4 monoid. A specialized version of its namesake from  Data.Foldable   :   j Convert any 3. to a list of its contents. Specialization of 8 k Efficiently 8 a 3 that contains values of type ‘   : ’ l Efficiently 8 a 3 that contains values of type ‘   : “ m Efficiently 5 any 3C checking to see if any of its values match the supplied predicate   9 “ n Efficiently 5 any 3C checking to see if all of its values match the supplied predicate   9 ’ o(Efficiently sum over the members of any 3   : ” p2Efficiently take the product of every member of a 3   : • qCheck to see if m  member of the 3 matches the supplied value rBCheck to make sure that the supplied value is not a member of the 3 s Efficiently 5 a subset of the elements in a 3 tjAllows idiomatic specialization of filter by proving a function that will be used to transform the output uA specialization of s  using the –— €, analogous to Data.List.find   t  ˜ abcdefghijklmnopqrstudefabcklmngijhqstuoprabcdefghijklmnopqrstuportable experimentalekmett@gmail.comvwxvwxvwxportable experimentalekmett@gmail.comDEFGHIJKvwxyz{|}~yz{|}~yz{|}~™ !"#$%%&''()*+,,-./01123345567789:;<=>?@@ABBCDDEFGHIJKLMNNOPPQRST U V W X Y Z [ \ = ] ] ^ _ _ ` a a b c d d e f f g h h i j k l m n o p q r s t u v w x y z { | } ~ €‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’‘“”•–—˜™š›n™œžŸ ”¢£¤¤„¦ monoids-0.2.0Data.Monoid.ReducerData.Monoid.SelfData.Monoid.UnionData.Monoid.OrdData.Monoid.CombinatorsData.Monoid.AdditiveData.GeneratorData.Monoid.Multiplicative Data.GroupData.Group.CombinatorsData.Monoid.ApplicativeData.Monoid.MonadData.Generator.CombinatorsData.Monoid.SugarData.Group.Sugarbase Data.Monoid Data.Maybe Data.FoldableData.OrdPrelude Data.Wordghc-prim GHC.TypesControl.Applicative Control.Monad Data.ListGHC.BoolReducerunitsnoccons foldMapReduce foldReduce returnUnitpureUnitSelfgetSelf UnionWith getUnionWith HasUnionWith unionWith emptyWithUniongetUnionHasUnionemptyunion MinPrioritygetMinPriority MaxPrioritygetMaxPriorityMingetMinMaxgetMax minfinityinfinitycyclerepeat replicatepluszeroChar8getChar8Values getValuesKeysgetKeys GeneratorElem mapReducemapTomapFromreduce mapReduceWith reduceWithExpgetExpLoggetLogMultiplicativeonetimesMultiplicativeGroupoverundergrecipGroupgnegateminus gsubtractAppgetAppAltgetAlt Traversal getTraversal snocTraversalMongetMonMonadSum getMonadSumAction getAction snocAction traverse_for_asummapM_forM_msumfoldMap concatMapfoldtoListandoranyallsumproductelemnotElemfilter filterWithfind+*^-negatesubtract/.\.recip^^MonoidMaybeFoldable GHC.ClassesminNothingmaxGHC.EnummaxBoundminBoundGHC.WordWord8Char Applicative AlternativeGHC.BaseMonad MonadPlusflipGHC.ListconcatBoolgetAllgetAnygetSum getProductFirstgetFirst