!mXo      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 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 h i j k l m n None,2456>HQSVXKfolds Strict Pairfolds A reified o.foldsThe shape of a pfolds A reified q.foldsStrict r"folds Reversed '[]'( ! "$#%&'("$#! % &' Trustworthy8SX"foldsPartially apply a # to some initial input on the left.foldsApply a  to a container full of input:$run ["hello","world"] $ L id (++) [] "helloworld"run [1,2,3] $ L id (+) 06foldsApply a  to a single element of inputfoldsLift a  into a s.HThis acts like a generalized notion of "costrength", when applied to a {, causing it to return the left-most value that fails to match the Prism, or the result of accumulating rewrapped in the s if everything matches.9run [Left 1, Left 2, Left 3] $ beneath _Left $ R id (+) 0Left 6;run [Left 1, Right 2, Right 3] $ beneath _Left $ R id (+) 0Right 2 Vbeneath :: Prism s t a b -> p a b -> p s t beneath :: Iso s t a b -> p a b -> p s t  Trustworthy >@AEHSVX%foldsA Moore MachinefoldsHConstruct a Moore machine from a state valuation and transition functionfoldscosieve (L id (+) 0) [1,2,3]6folds efficient , leaky  Trustworthy >@AEHSVX)folds)A strict left fold / strict Moore machinefoldsOConstruct a strict Moore machine from a state valuation and transition functionfolds efficient , leaky  Trustworthy@AEHVX*"foldsA Mealy Machine Trustworthy@AEHVX+:foldsA strict Mealy Machine Trustworthy >@AEHSVX-dfoldsA p+ caught in amber. a.k.a. a monoidal reducer folds efficient  , efficient  Trustworthy @AEHVX.x foldsA semigroup reducer       Trustworthy >@AEHSVX0m$folds&right folds / a reversed Moore machine9foldsleaky  , efficient $%$%  Trustworthy@AEHVX1;foldsA reversed Mealy machine;<;< (C) 2009-2013 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimental non-portableNone8W TfoldsT3 is a folding homomorphism to a strict left folding  xs (T ) "a  xs   xs (T ) "a T ( xs )  l xs (T ) "a T ( l xs )  (T ) xs "a T (  xs)  l (T ) xs "a T ( l  xs) left' (T ) "a T (left' ) right' (T ) "a T (right' ) dimap l r (T ) "a T (dimap l r ) extract (T ) "a extract  t a "a T (t a) T  u T  "a T ( u ) v a "a T (v a) T  w T . k "a T ( w k)  p (T ) "a T ( p )  a (T ) "a T ( a ) Vfolds+Scan homomorphism to a strict Mealy machineXfoldsX0 is a folding homomorphism to a monoidal folding  xs (X ) "a  xs   xs (X ) "a X ( xs )  l xs (X ) "a X ( l xs )  (X ) xs "a X (  xs)  l (X ) xs "a X ( l  xs) left' (X ) "a X (left' ) right' (X ) "a X (right' ) dimap l r (X ) "a X (dimap l r ) extract (X ) "a extract  t a "a X (t a) X  u X  "a X ( u ) v a "a X (v a) X  w X . k "a X ( w k)  p (X ) "a X ( p )  a (X ) "a X ( a ) YfoldsY- is a folding homomorphism to a right folding  xs (Y ) "a  xs   xs (Y ) "a Y ( xs )  l xs (Y ) "a Y ( l xs )  (Y ) xs "a Y (  xs)  l (Y ) xs "a Y ( l  xs) left' (Y ) "a Y (left' ) right' (Y ) "a Y (right' ) dimap l r (Y ) "a Y (dimap l r ) extract (Y ) "a extract  t a "a Y (t a) Y  u Y  "a Y ( u ) v a "a Y (v a) Y  w Y . k "a Y ( w k)  p (Y ) "a Y ( p )  a (Y ) "a Y ( a ) [folds[. is a scan homomorphism to a semigroup reducer\folds[' is a scan homomorphism to a right scanefoldsEWe can convert from a strict left folding to a right or monoidal foldffoldsCWe can convert from a lazy left folding to a right or monoidal foldgfolds8We can convert from a monoidal fold to a lazy right foldhfolds8We can convert from a lazy right fold to a monoidal foldifoldsAWe can convert from a lazy left folding to a strict left folding.jfolds$We can convert a lazy fold to itself(  $%;<STUVWXYZ[\(  ;<$%Z[\UVWXYSTx    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !" # # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 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 h i j klmnloplmqlrstuvlmwlmxlmylmz{"folds-0.7.5-78rt6wMrjqoFxMHcJJtP42Data.Fold.InternalData.Fold.Class Data.Fold.L Data.Fold.L' Data.Fold.L1 Data.Fold.L1' Data.Fold.M Data.Fold.M1 Data.Fold.R Data.Fold.R1 Data.Fold FreeSemigrouprunFreeSemigroup FreeMonoid runFreeMonoidTree1Bin1Tip1List1Cons1LastBoxAnPair'SrunSTreeZeroOneTwoNrunNMaybe'Nothing'Just' SnocList1Snoc1FirstSnocListSnocNilmaybe' foldDeRef foldDeRef1$fTraversableSnocList$fFoldableSnocList$fFunctorSnocList$fTraversableSnocList1$fFoldableSnocList1$fFunctorSnocList1$fFoldableMaybe' $fMonoidN $fSemigroupN$fTraversableTree$fFoldableTree $fFunctorTree $fSemigroupS $fMonoidPair'$fSemigroupPair'$fTraversableAn $fFoldableAn $fFunctorAn$fTraversableBox $fFoldableBox $fFunctorBox$fTraversableList1$fFoldableList1$fFunctorList1$fTraversableTree1$fFoldableTree1$fFunctorTree1$fFoldableFreeMonoid$fFoldable1FreeSemigroup$fFoldableFreeSemigroup$fBitraversableT $fBifoldableT $fBifunctorT $fMuRefTree $fMuRef1Tree$fBitraversable1T1$fBifoldable1T1$fBitraversableT1$fBifoldableT1 $fBifunctorT1 $fMuRef1Tree1 $fMuRefTree1 $fEqSnocList $fOrdSnocList$fShowSnocList$fReadSnocList$fDataSnocList $fEqSnocList1$fOrdSnocList1$fShowSnocList1$fReadSnocList1$fDataSnocList1 $fEqMaybe' $fOrdMaybe' $fShowMaybe' $fReadMaybe' $fDataMaybe'$fEqN$fOrdN$fShowN$fReadN$fDataN$fEqTree $fOrdTree $fShowTree $fReadTree $fDataTree$fEqS$fOrdS$fShowS$fReadS$fDataS $fEqPair' $fOrdPair' $fShowPair' $fReadPair' $fDataPair'$fEqAn$fOrdAn$fShowAn$fReadAn$fDataAn$fEqBox$fOrdBox $fShowBox $fReadBox $fDataBox$fFunctorFreeMonoid$fFunctorFreeSemigroup $fFunctorT $fFoldableT$fTraversableT $fFunctorT1 $fFoldableT1$fTraversableT1FoldingprefixprefixOfpostfix postfixOfrunrunOf filteringScanprefix1postfix1run1 interspersingbeneathLunfoldL $fMonadFixL$fCorepresentableL $fClosedL $fCosieveL[] $fCostrongL$fMonadReader[]L$fRepresentableL$fDistributiveL$fComonadApplyL$fApplyL $fExtendL $fMonadZipL$fMonadL$fBindL$fApplicativeL $fComonadL $fFunctorL $fChoiceL $fProfunctorL $fFoldingL$fScanLL'unfoldL' $fMonadFixL'$fMonadReader[]L' $fCosieveL'[]$fCorepresentableL' $fClosedL' $fCostrongL'$fRepresentableL'$fDistributiveL'$fComonadApplyL' $fApplyL' $fExtendL' $fMonadZipL' $fMonadL'$fBindL'$fApplicativeL' $fComonadL' $fFunctorL' $fChoiceL'$fProfunctorL' $fFoldingL'$fScanL'L1 $fMonadFixL1$fMonadReaderNonEmptyL1 $fClosedL1$fRepresentableL1$fDistributiveL1$fCorepresentableL1 $fCostrongL1$fCosieveL1NonEmpty$fArrowChoiceL1 $fChoiceL1 $fStrongL1$fProfunctorL1 $fArrowL1$fCategoryTYPEL1$fSemigroupoidTYPEL1 $fMonadZipL1 $fMonadL1$fApplicativeL1 $fApplyL1 $fPointedL1 $fFunctorL1$fScanL1L1' $fMonadFixL1'$fMonadReaderNonEmptyL1' $fClosedL1'$fRepresentableL1'$fDistributiveL1'$fCorepresentableL1' $fCostrongL1'$fCosieveL1'NonEmpty$fArrowChoiceL1' $fChoiceL1' $fStrongL1'$fProfunctorL1' $fArrowL1'$fCategoryTYPEL1'$fSemigroupoidTYPEL1' $fMonadL1'$fApplicativeL1' $fApplyL1' $fPointedL1' $fFunctorL1' $fScanL1'M $fMonadFixM $fCostrongM$fRepresentableM$fMonadReaderFreeMonoidM$fCorepresentableM$fCosieveMFreeMonoid $fClosedM$fDistributiveM$fComonadApplyM$fApplyM $fExtendM $fMonadZipM$fMonadM$fBindM$fApplicativeM $fComonadM $fFunctorM $fChoiceM $fProfunctorM $fFoldingM$fScanMM1runM1 $fMonadFixM1$fMonadReaderFreeSemigroupM1 $fCostrongM1$fRepresentableM1$fCorepresentableM1$fCosieveM1FreeSemigroup$fDistributiveM1 $fClosedM1$fArrowChoiceM1 $fChoiceM1 $fStrongM1$fProfunctorM1 $fArrowM1$fCategoryTYPEM1$fSemigroupoidTYPEM1 $fMonadZipM1 $fMonadM1$fApplicativeM1 $fApplyM1 $fPointedM1 $fFunctorM1$fScanM1R $fMonadFixR $fClosedR$fMonadReader[]R $fCosieveR[]$fCorepresentableR $fCostrongR$fRepresentableR$fDistributiveR$fComonadApplyR$fApplyR $fExtendR$fApplicativeR $fMonadZipR$fMonadR$fBindR $fComonadR $fFunctorR $fChoiceR $fProfunctorR $fFoldingR$fScanRR1 $fMonadFixR1$fMonadReaderNonEmptyR1$fRepresentableR1$fDistributiveR1$fCorepresentableR1 $fCostrongR1$fCosieveR1NonEmpty $fClosedR1$fArrowChoiceR1 $fChoiceR1 $fStrongR1$fProfunctorR1 $fArrowR1$fCategoryTYPER1$fSemigroupoidTYPER1 $fMonadZipR1 $fMonadR1$fApplicativeR1 $fApplyR1 $fPointedR1 $fFunctorR1$fScanR1AsL'asL'AsL1'asL1'AsRMasMasRAsRM1asM1asR1 $fAsRM1R1$fAsRM1R $fAsRM1M1$fAsRM1M $fAsRM1L1' $fAsRM1L1 $fAsRM1L'$fAsRM1L$fAsRML'$fAsRML$fAsRMM$fAsRMR$fAsL'L$fAsL'L' $fAsL1'L'$fAsL1'L $fAsL1'L1 $fAsL1'L1'baseGHC.Base Semigroup Data.FoldablefoldMapMonoid GHC.MaybeMaybe"lens-4.18.1-JAFcmQC7pDa2H0eUzO2c3XControl.Lens.TypePrismpure<*>return>>=