wsjh      !"#$%&'()*+,-./0123456 7 8 9 : ; < = > ? @ A B C D 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  Trustworthyhhnon-portable (MPTCs) experimentalekmett@gmail.com Trustworthy$This type may be best read infix. A c  m is a i 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 j 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 k 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:  Convert a value into a i Append a value to a i$ for use in left-to-right reduction Prepend a value onto a i( for use during right-to-left reduction Apply a  to a lK container, after mapping the contents into a suitable form for reduction. Apply a  to a l mapping each element through  Apply a  to a m mapping each element through  ) nopqrstuvwxyz{|}~   $ nopqrstuvwxyz{|}~non-portable (MPTCs) experimentalekmett@gmail.com TrustworthyA  uses an glues together  actions with (*>)  in the manner of  traverse_ 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    non-portable (MPTCs) experimentalekmett@gmail.com TrustworthyA  turns any  instance into a j. non-portable (MPTCs) experimentalekmett@gmail.com TrustworthyA 2 uses an glues together monadic 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  non-portable (MPTCs) experimentalekmett@gmail.com TrustworthyA  turns any  instance into a j. non-portable (MPTCs) experimentalekmett@gmail.com TrustworthyIf m is a c-Reducer , then m is (c  m)-Reducer ( This can be used to quickly select a Reducer for use as a   .  ! ! !  ! Trustworthy"The j ('unionWith mappend',-)! for containers full of monoids. 'MPolymorphic containers that we can supply an operation to handle unions with )The j (/,-) .A Container suitable for the ) j +"#$%&'()*+,-./ "#$%&'()*+,-././,-)*+'(%&"#$#"#$%&'()*+,-./non-portable (MPTCs) experimentalekmett@gmail.com Trustworthy0A 0 turns any  wrapped around a i into a i 3A 3 uses an glues together  Applicative actions with (*>)  in the manner of  traverse_ 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 012345012345345012012345 non-portable (MPTCs) experimentalekmett@gmail.com Trustworthy6A 6 turns any  instance into a i. 678678678678 portable experimentalekmett@gmail.com Trustworthy 9:;9:;9:;9:; portable experimentalekmett@gmail.com Trustworthy<a E transformer that treats  as   This lets you use a  ByteString as a  source without going through a j transformer like UTF8 ?a EM transformer that asks only for the values contained in an indexed container Ba EA transformer that asks only for the keys of an indexed container Eminimal definition G or H JApply a  directly to the elements of a E '<=>?@ABCDEFGHIJKL<=>?@ABCDEFGHIJKLEFGHIBCD?@A<=>JKL<=>?@ABCDEFGHIJKL #non-portable (type families, MPTCs) experimentalekmett@gmail.com TrustworthyM Efficiently G a E using the 4 monoid. A specialized version of its namesake from  Data.Foldable   G  N!Convenience function as found in  Data.Foldable    M O1The sum of a collection of actions, generalizing    L getAlt P Efficiently G a E using the 4 monoid. A specialized version of its namesake from  Data.Foldable and  Control.Monad   K  Q!Convenience function as found in  Data.Foldable and  Control.Monad    P R1The sum of a collection of actions, generalizing    L  S Efficiently G a E using the 4 monoid. A specialized version of its namesake from  Data.Foldable   K  TType specialization of foldMap above U Efficiently J a E using the 4 monoid. A specialized version of its namesake from  Data.Foldable   L  V Convert any E. to a list of its contents. Specialization of J W Efficiently J a E that contains values of type    L  X Efficiently J a E that contains values of type    L  Y Efficiently G any EC checking to see if any of its values match the supplied predicate   K  Z Efficiently G any EC checking to see if all of its values match the supplied predicate   K  [(Efficiently sum over the members of any E   L  \2Efficiently take the product of every member of a E   L  ]Check to see if Y member of the E matches the supplied value ^BCheck to make sure that the supplied value is not a member of the E _ Efficiently G a subset of the elements in a E `jAllows idiomatic specialization of filter by proving a function that will be used to transform the output MNOPQRSTUVWXYZ[\]^_`MNOPQRSTUVWXYZ[\]^_`PQRMNOWXYZSUVT]_`[\^MNOPQRSTUVWXYZ[\]^_` portable experimentalekmett@gmail.com Trustworthyaminimal definition b or c eApply a  directly to the elements of a E abcdefgabcdefgabcdefgabcdefg !!"##$%%&''())*+,-.//0123455667 8 8 9 : : ; < < = > > ? @ @ A B C D 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 defghijkilminopqrstuvwxyz{|}~iiiMipp i iifgfgijijijij   reducers-3.0.2.1Data.Semigroup.ReducerData.Semigroup.ApplicativeData.Semigroup.AlternativeData.Semigroup.MonadData.Semigroup.MonadPlusData.Semigroup.Reducer.WithData.Semigroup.UnionData.Semigroup.ApplyData.Semigroup.AltData.Semigroup.SelfData.GeneratorData.Generator.CombinatorsData.Semigroup.GeneratorData.Semigroup.InstancesCountgetCountReducerunitsnoccons foldMapReducefoldMapReduce1 foldReduce foldReduce1 returnUnitpureUnitApgetApp Traversal getTraversal Alternate getAlternateMongetMonAction getActionMonadSum getMonadSum WithReducerwithoutReducer UnionWith getUnionWith HasUnionWith0 emptyWith HasUnionWith unionWithUniongetUnion HasUnion0emptyHasUnionunionAppTravgetTravAltergetAlterSelfgetSelfChar8getChar8Values getValuesKeysgetKeys GeneratorElem mapReducemapTomapFromreduce mapReduceWith reduceWith traverse_for_asummapM_forM_msumfoldMap concatMapfoldtoListandoranyallsumproductelemnotElemfilter filterWith Generator1 mapReduce1mapTo1mapFrom1reduce1mapReduceWith1 reduceWith1$fSemigroupFingerTreesemigroups-0.11Data.Semigroup Semigroupbase Data.MonoidMonoid Data.MaybeMaybe Data.FoldableFoldablesemigroupoids-3.1Data.Semigroup.Foldable Foldable1$fReducermWrappedMonoid$fReducer(,)Map$fReducer(,)IntMap $fReduceraSet$fReducerIntIntSet $fReduceraSeq$fReduceraFingerTree$fReduceraLast$fReducerMaybeLast$fReduceraFirst$fReducerMaybeFirst $fReduceraMax $fReduceraMin$fReduceraProduct $fReduceraSum$fReduceraDual$fReducer(->)Endo$fReducerBoolAll$fReducerBoolAny $fReducerc() $fReducerc[]$fReducerc(,,,)$fReducerc(,,) $fReducerc(,)$fReduceraCount $fMonoidCount$fSemigroupCount$fHashableCountControl.Applicative Applicative snocTraversal $fReducerfAp $fMonoidAp $fSemigroupAp$fReducerfTraversal$fMonoidTraversal$fSemigroupTraversal Alternative$fReducerfAlternate$fMonoidAlternate$fSemigroupAlternate Control.Monad snocAction $fReducerfMon $fMonoidMon$fSemigroupMon$fReducerfAction$fMonoidAction$fSemigroupAction MonadPlus$fReducerfMonadSum$fMonoidMonadSum$fSemigroupMonadSumfingertree-0.0.1.1Data.FingerTree FingerTreemeasure$fMeasuredmWithReducer$fReducerWithReducerm$fTraversable1WithReducer$fFoldable1WithReducer$fTraversableWithReducer$fFoldableWithReducer$fFunctorWithReducer$fHashableWithReducer$fReducerfUnionWith$fMonoidUnionWith$fSemigroupUnionWith$fHasUnionWith0Map$fHasUnionWithMap$fHasUnionWith0IntMap$fHasUnionWithIntMap$fTraversable1Union$fFoldable1Union$fTraversableUnion$fFoldableUnion$fFunctorUnion$fReducerfUnion $fMonoidUnion$fSemigroupUnion$fHasUnion0HashSet$fHasUnionHashSet$fHasUnion0IntSet$fHasUnionIntSet$fHasUnion0Set $fHasUnionSet $fHasUnion0[] $fHasUnion[]$fHasUnion0Map $fHasUnionMap$fHasUnion0HashMap$fHasUnionHashMap$fHasUnion0IntMap$fHasUnionIntMapData.Functor.BindApplysnocTrav $fReducerfApp$fSemigroupApp$fReducerfTrav$fSemigroupTravData.Functor.AltAlt$fReducerfAlter $fMonoidAlter$fSemigroupAlter$fTraversable1Self$fFoldable1Self$fTraversableSelf$fFoldableSelf $fFunctorSelf$fReducermSelfGHC.WordWord8ghc-prim GHC.TypesChar$fGeneratorChar8$fGeneratorChar80$fGeneratorValues$fGeneratorValues0$fGeneratorValues1$fGeneratorKeys$fGeneratorKeys0$fGeneratorKeys1$fGeneratorArray$fGeneratorHashMap$fGeneratorMap$fGeneratorIntMap$fGeneratorSet$fGeneratorHashSet$fGeneratorIntSet$fGeneratorSeq$fGeneratorFingerTree$fGeneratorNonEmpty $fGenerator[]$fGeneratorText$fGeneratorByteString$fGeneratorByteString0GHC.BaseflipGHC.Listconcat WrappedMonoid unwrapMonoidBoolgetAllgetAnygetSum getProduct$fGenerator1NonEmpty