fS      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR Safe-InferredS A strict TU A strict VWConvert U to VXConvert V to UYConvert S to V SZ[U\]WXY SZ[U\]WXYS[ZU]\WXY Trustworthy:HM1$A Handler for the upstream input of 3Any lens, traversal, or prism will type-check as a  xinstance Monad m => Monoid (EndoM m a) where mempty = EndoM return mappend (EndoM f) (EndoM g) = EndoM (f >=> g)&A handler for the upstream input of a 3Any lens, traversal, or prism will type-check as a Like , but monadic.A '# m a b' processes elements of type a, and results in a monadic value of type m b.FoldM   step   initial   extractEfficient representation of a left fold that preserves the fold's step function, initial accumulator, and extraction functionThis allows the ^M instance to assemble derived folds that traverse the container only onceA '! a b' processes elements of type a$ and results in a value of type b.Fold   step   initial   extract Apply a strict left  to a _ container Like   , but monadic Convert a strict left  into a scan )Fold all values within a container using ` and a  Convert a "foldMap" to a /Get the first element of a container or return b if the container is empty.Get the last element of a container or return b if the container is empty[Get the last element of a container or return a default value if the container is emptyReturns c if the container is empty, d otherwise"Return the length of the containerReturns c if all elements are c, d otherwiseReturns c if any element is c, d otherwise(all predicate) returns c, if all elements satisfy the predicate, d otherwise(any predicate) returns c- if any element satisfies the predicate, d otherwise Computes the sum of all elements!Computes the product all elementsComputes the maximum elementComputes the minimum element(elem a) returns c* if the container has an element equal to a, d otherwise (notElem a) returns d* if the container has an element equal to a, c otherwise(find predicate)? returns the first element that satisfies the predicate or b& if no element satisfies the predicate (index n) returns the n th element of the container, or b< if the container has an insufficient number of elements (elemIndex a)4 returns the index of the first element that equals a , or b if no element matches (findIndex predicate)M returns the index of the first element that satisfies the predicate, or b& if no element satisfies the predicate!/Pick a random element, using reservoir sampling"Like , except with a more general e return value#Like , except with a more general f argument$Fold all values into a list%-Fold all values into a list, in reverse order& O(n log n)`. Fold values into a list with duplicates removed, while preserving their first occurrences'O(n^2)`. Fold values into a list with duplicates removed, while preserving their first occurrences(Fold values into a set)Fold all values into a vector*Upgrade a fold to accept the  type+%Upgrade a monadic fold to accept the  type, Generalize a  to a  Rgeneralize (pure r) = pure r generalize (f <*> x) = generalize f <*> generalize x-Simplify a pure  to a  Jsimplify (pure r) = pure r simplify (f <*> x) = simplify f <*> simplify x. _Fold1 step returns a new  using just a step function that has the same type for the accumulator and the element. The result type is the accumulator type wrapped in V0. The initial accumulator is retrieved from the _, the result is None for empty containers./(premap f folder) returns a new  where f is applied at each step 6fold (premap f folder) list = fold folder (map f list)!fold (premap Sum mconcat) [1..10]Sum {getSum = 55}fold mconcat (map Sum [1..10])Sum {getSum = 55} 4premap id = id premap (f . g) = premap g . premap f Jpremap k (pure r) = pure r premap k (f <*> x) = premap k f <*> premap k x0(premapM f folder) returns a new - where f is applied to each input element 9foldM (premapM f folder) list = foldM folder (map f list) 6premapM id = id premapM (f . g) = premap g . premap f NpremapM k (pure r) = pure r premapM k (f <*> x) = premapM k f <*> premapM k x1(handles t folder) transforms the input of a ' using a lens, traversal, or prism: handles _1 :: Fold a r -> Fold (a, b) r handles _Left :: Fold a r -> Fold (Either a b) r handles traverse :: Traversable t => Fold a r -> Fold (t a) r,fold (handles traverse sum) [[1..5],[6..10]]55^fold (handles (traverse.traverse) sum) [[Nothing, Just 2, Just 7],[Just 13, Nothing, Just 20]]422fold (handles (filtered even) sum) [1,3,5,7,21,21]42<fold (handles _2 mconcat) [(1,"Hello "),(2,"World"),(3,"!")]"Hello World!" 8handles id = id handles (f . g) = handles f . handles g Nhandles t (pure r) = pure r handles t (f <*> x) = handles t f <*> handles t x2(handlesM t folder) transforms the input of a ' using a lens, traversal, or prism: handlesM _1 :: FoldM m a r -> FoldM (a, b) r handlesM _Left :: FoldM m a r -> FoldM (Either a b) r handlesM traverse :: Traversable t => FoldM m a r -> FoldM m (t a) r2 obeys these laws: <handlesM id = id handlesM (f . g) = handlesM f . handlesM g RhandlesM t (pure r) = pure r handlesM t (f <*> x) = handlesM t f <*> handlesM t xFghij  !"#$%&'(k)*+,-./012lmnopqrstuvwxy6_z{  !"#$%&'()*+,-./0123  !"#$%&'()*+,-./012@ghij  !"#$%&'(k)*+,-./012lmnopqrstuvwxyNone3Apply a strict left  to a lazy bytestring4.Get the first byte of a byte stream or return b if the stream is empty5-Get the last byte of a byte stream or return b if the byte stream is empty6Returns c if the byte stream is empty, d otherwise7-Return the length of the byte stream in bytes8(all predicate) returns c% if all bytes satisfy the predicate, d otherwise9(any predicate) returns c* if any byte satisfies the predicate, d otherwise:Computes the maximum byte;Computes the minimum byte< (elem w8) returns c( if the byte stream has a byte equal to w8, d otherwise= (notElem w8) returns d( if the byte stream has a byte equal to w8, c otherwise>(find predicate)< returns the first byte that satisfies the predicate or b# if no byte satisfies the predicate? (index n) returns the nth byte of the byte stream, or b6 if the stream has an insufficient number of bytes@(elemIndex w8)1 returns the index of the first byte that equals w8 , or b if no byte matchesA(findIndex predicate)J returns the index of the first byte that satisfies the predicate, or b# if no byte satisfies the predicateBcount w8 returns the number of times w8 appears3456789:;<=>?@AB|}3456789:;<=>?@AB3456798:;<=>?@AB3456789:;<=>?@AB Safe-InferredCApply a strict left  to lazy textD3Get the first character of a text stream or return b if the stream is emptyE2Get the last character of a text stream or return b if the text stream is emptyFReturns c if the text stream is empty, d otherwiseG2Return the length of the text stream in charactersH(all predicate) returns c. if all characters satisfy the predicate, d otherwiseI(any predicate) returns c/ if any character satisfies the predicate, d otherwiseJComputes the maximum characterKComputes the minimum characterL(elem c) returns c- if the text stream has a character equal to c, d otherwiseM (notElem c) returns d1 if the text stream has a character equal to c, c otherwiseN(find predicate)A returns the first character that satisfies the predicate or b( if no character satisfies the predicateO (index n) returns the n$th character of the text stream, or b; if the stream has an insufficient number of charactersP (elemIndex c)6 returns the index of the first character that equals c , or b if no character matchesQ(findIndex predicate)O returns the index of the first character that satisfies the predicate, or b, if no character satisfies the predicateR (count c) returns the number of times c appearsCDEFGHIJKLMNOPQR~CDEFGHIJKLMNOPQRCDEFGIHJKLMNOPQRCDEFGHIJKLMNOPQR        !"#$%&'()*+,-./01234  !"5  !"56789:7;<=>?@ABC7DE7FG7HI7HJ7;KLMNLMO7PQ7RSTTUUVWXYZ[\]^_`abcdefghij7klmnopqrs foldl-1.1.0 Control.FoldlControl.Foldl.ByteStringControl.Foldl.TextControl.Foldl.InternalHandlerMEndoMappEndoMHandlerFoldMFoldfoldfoldMscanmconcatfoldMapheadlastlastDefnulllengthandorallanysumproductmaximumminimumelemnotElemfindindex elemIndex findIndexrandom genericLength genericIndexlistrevListnubeqNubsetvectorpurelyimpurely generalizesimplify_Fold1premappremapMhandleshandlesMcountEither'base Data.EitherEitherMaybe' Data.MaybeMaybelazystricthushRight'Left'Nothing'Just'Control.Applicative Applicative Data.FoldableFoldable Data.MonoidmappendmemptyNothingghc-prim GHC.TypesTrueFalseGHC.NumNumGHC.RealIntegralPair3Pair maxChunkSize $fMonoidEndoM$fFloatingFoldM$fFractionalFoldM $fNumFoldM $fMonoidFoldM$fApplicativeFoldM$fFunctorFoldM$fFloatingFold$fFractionalFold $fNumFold $fMonoidFold$fApplicativeFold$fProfunctorFold $fFunctorFold primitive-0.6Control.Monad.Primitive PrimMonadvector-0.10.12.3Data.Vector.Generic.BaseVectorGHC.WordWord8bytestring-0.10.4.0Data.ByteString.Internal ByteString text-1.2.1.1Data.Text.InternalText