t`o      !"#$%&'()*+,-./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*0234:DMORT Strict Pair A reified o.The shape of a p A reified q.Strict r" Reversed '[]'\stuvwxyz{|  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ( ! "$#%&'("#$ ! % &'=stuvwxyz{|    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ Trustworthy6OTPartially apply a # to some initial input on the left.Apply a  to a container full of input:$run ["hello","world"] $ L id (++) [] "helloworld"run [1,2,3] $ L id (+) 06Apply a  to a single element of inputLift a  into a }.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 } 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 :<=ADORTA Moore MachineHConstruct a Moore machine from a state valuation and transition functioncosieve (L id (+) 0) [1,2,3]6 efficient , leaky  Trustworthy :<=ADORT)A strict left fold / strict Moore machineOConstruct a strict Moore machine from a state valuation and transition function efficient , leaky  Trustworthy<=ADRTA Mealy Machine~~ Trustworthy<=ADRTA strict Mealy Machine Trustworthy :<=ADORTA p+ caught in amber. a.k.a. a monoidal reducer  efficient  , efficient      Trustworthy <=ADRT A semigroup reducer    !"#          !"#  Trustworthy :<=ADORT$&right folds / a reversed Moore machine9leaky  , efficient $%&'()*+,-./0123456789:$%$%$%&'()*+,-./0123456789:  Trustworthy<=ADRT;A reversed Mealy machine;<=>?@ABCDEFGHIJKLMNOPQR;<;<;<=>?@ABCDEFGHIJKLMNOPQR (C) 2009-2013 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimental non-portableNone6 TT3 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   a "a T ( a) T   T  "a T (  )  a "a T ( a) T   T . k "a T (  k)  p (T ) "a T ( p )  a (T ) "a T ( a ) V+Scan homomorphism to a strict Mealy machineXX0 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   a "a X ( a) X   X  "a X (  )  a "a X ( a) X   X . k "a X (  k)  p (X ) "a X ( p )  a (X ) "a X ( a ) YY- 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   a "a Y ( a) Y   Y  "a Y (  )  a "a Y ( a) Y   Y . k "a Y (  k)  p (Y ) "a Y ( p )  a (Y ) "a Y ( a ) [[. is a scan homomorphism to a semigroup reducer\[' is a scan homomorphism to a right scan]AWe can convert from a lazy left folding to a strict left folding.^$We can convert a lazy fold to itselfcEWe can convert from a strict left folding to a right or monoidal folddCWe can convert from a lazy left folding to a right or monoidal folde8We can convert from a monoidal fold to a lazy right foldf8We can convert from a lazy right fold to a monoidal foldSTUVWXYZ[\]^_`abcdefghijklmn(  $%;<STUVWXYZ[\,  ;<$%Z[\UVVWXYSTSTUVVWXYZ[\]^_`abcdefghijklmn    !"#$%&'()*+,-./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 klmnloplqrlqstuvwxyz{t|}~  lqlqlqlq"folds-0.7.4-2Q63kdYKU9gKV48c2kJUxCData.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$fBitraversable1T1$fBifoldable1T1$fBitraversableT1$fBifoldableT1 $fBifunctorT1 $fMuRef1Tree1 $fMuRefTree1$fBitraversableT $fBifoldableT $fBifunctorT $fMuRef1Tree $fMuRefTree$fFoldable1FreeSemigroup$fFoldableFreeSemigroup$fFoldableFreeMonoid$fTraversableTree1$fFoldableTree1$fFunctorTree1$fTraversableList1$fFoldableList1$fFunctorList1$fTraversableBox $fFoldableBox $fFunctorBox$fTraversableAn $fFoldableAn $fFunctorAn $fMonoidPair'$fSemigroupPair' $fSemigroupS$fTraversableTree$fFoldableTree $fFunctorTree $fMonoidN $fSemigroupN$fFoldableMaybe'$fTraversableSnocList1$fFoldableSnocList1$fFunctorSnocList1$fTraversableSnocList$fFoldableSnocList$fFunctorSnocList $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$fAsL'L$fAsL'L' $fAsL1'L'$fAsL1'L $fAsL1'L1 $fAsL1'L1'$fAsRML'$fAsRML$fAsRMM$fAsRMR $fAsRM1R1$fAsRM1R $fAsRM1M1$fAsRM1M $fAsRM1L1' $fAsRM1L1 $fAsRM1L'$fAsRM1LbaseData.Semigroup Semigroup Data.FoldablefoldMapGHC.BaseMonoidMaybeT1ABMuRef1DeRef1muRef1TT0T2"lens-4.15.3-7p501VTvBbD8JQC7xFZ9Q8Control.Lens.TypePrismwalkcatapure<*>return>>=