O                      ! " # $ % & ' ( ) * +,-./0123456789:;<=>?@ABCDEFGHIJKLMNSafeChecks that composing O & P is equivalent to the identity.Checks whether O! can skip prepended white space;  is a prerequisite.Checks whether OO both copes with garbage following the valid input-data, & leaves it unchanged.kWhether a character of garbage might reasonably be confused with valid data, & therefore should be dropped.The datum to be written & read.%The text to follow the written datum.SafeChecks that composing Q & R is equivalent to the identity.SafeChecks that composing S & T is equivalent to the identity.Safe1Check whether the specified result is successful.SafeSafeSafeSafeBChecks that implementations of Data.Array.IArray.Ix satisfy rules.SafefTime the specified pure expression, returning the required number of CPU-seconds and the result, as a Pair.,CAVEAT: as a side-effect, the expression is deep evaluated. 9Print the time required by the specified pure expression.,CAVEAT: as a side-effect, the expression is deep evaluated.!Arbitrary polymorphic expression.;The original expression, tagged with the CPU-seconds taken.    Safe `Time the specified IO-action, returning the required number of CPU-seconds and the result, as a Pair. 3Print the time required by the specified IO-action.    Safe =Constructs an infinite list of independent random-generators. .Shuffles the specified finite list, using the  Fisher-Yates algorithm;  2https://en.wikipedia.org/wiki/Fisher-Yates_shuffle.dThe resulting list has the same length and constituents as the original; only the order has changed.<The input list is traversed, but the items aren't evaluated.hGenerate an infinite list of items, each independently randomly selected from the specified finite list.[CAVEAT: because the selections are made non-destructively, duplicates may be returned; cf.  .7Return a randomly selected element from those provided.aGenerate an infinite list of data, each independently selected random instances of the specified bounded type.E.g.  (generateSelectionFromBounded U' System.Random.getStdGen) :: IO [Bool] .     Safe+A file-path, and the contents read from it.9The ordered sequence of directories, searched for a file.When supplied with an absolute file-path, the  search-pathd is ignored and an exception is thrown if either the file-path is invalid or the file doesn't exist.If the specified file-name is relative*, all matching instances on the specified  search-path are returned.&CAVEAT: doesn't perform file-globbing. Accessor. Accessor. Traverse the  search-path, looking for matching instances of the specified file-name, and either throw an exception, or return a pair composed from the path to the first matching file, together with its contents.GReturns the polymorphic data, read from the first matching file on the  search-path-, along with the path from which it was read.ZReturns an error on failure to parse the contents of the first matching file found on the  search-path. SafeCThe interface to which data which can self-validate should conform.9Returns the first error only (so only call on failure of 7), since subsequent tests may be based on invalid data./Extracts the failed tests from those specified.  !"#  !"# None$The required interface.$%$%$%$% Safe&Extends the concept of .'Extends the concept of .(1Access the first datum from the specified triple.)2Access the second datum from the specified triple.*1Access the third datum from the specified triple.&'()*&'()*&'()*&'()*Safe+KReplaces any embedded tab-characters with the appropriate number of spaces.+ Tab-length.+++Safe,Extends the concept of .-Extends the concept of ..4Access the first datum from the specified quadruple./5Access the second datum from the specified quadruple.04Access the third datum from the specified quadruple.15Access the fourth datum from the specified quadruple.,-./01,-./01,-./01,-./01Safe22Apply the same transformation to both halves of a Pair.bCAVEAT: even though the function may be polymorphic, the pair is required to have identical types.2222SafeVHThe polymorphic pair, resulting from splitting a list of arbitrary type.W8Use the specified transformation, to generate a list of Vs, from the initial one.3Create the set of all V.s, migrating left from the specified location.CAVEAT: X fails when Y has been reduced to null.4Create the set of all V/s, migrating right from the specified location.CAVEAT: pattern-match against  :  fails, when Z has been reduced to [.VW#The function used to transform one split into the next.Index.*The polymorphic input list from which the splits are generated.9The list of all required splits of the single input list.3Index.*The polymorphic input list from which the splits, are generated, as the index is stepped left9The list of all required splits of the single input list.4Index.*The polymorphic input list from which the splits. are generated, as the index is stepped right.9The list of all required splits of the single input list.3434VW34Safe5:Describes the number of consecutive equal items in a list.6 Accessor.7 Accessor.8 Run-length encodes the specified list.9 Performs  run-length2 decoding to retrieve the original unencoded list.56789567895896756789None:!The type of function required by ?, A.;4The length of the chunks into which a list is split.<2Splits a list into chunks of the specified length.cThe last chunk will be shorter, if the chunk-length isn't an aliquot part of the input list-length.[If the chunk-length is zero, the resulting list will be an infinite sequence of null lists.6CAVEAT: a similar function is available in the module Data.List.Split, though this one checks for (chunkLength < 0).=0Remove the single indexed element from the list.> A convenient way to compose the :-function required by ? & A.?Take the first element from the (potentially infinite) list, which matches the subsequent element, according to the specified function.@A specific instance of ?.AThe list of all permutations, generated by selecting any one datum from each sub-list in turn, from the specified list of lists.VAs each item is selected, the remaining lists are filtered according to the specified : -function.Thus \9 could be used to select a different item from each list.BThe list of all permutations, generated by selecting any one datum from each sub-list in turn, from the specified list of lists.A specific instance of AU, in which no filtering of subsequent lists is performed after each item is selected.N.B.: differs from ]/, which selects items from a single input list.CA strict version of ^ with better time-complexity.jCAVEAT: the specified list must be finite, since the entire set is constructed before streaming to a list.aCAVEAT: it sorts the output as a side-effect, & consequently it requires a type which implements _.`A specialisation for type a.DConverts a list of Pairs, into a narrower list.EKInterleaves the specified lists, taking the first item from the first list.FZMerge two sorted lists, according to the specified order, to product a single sorted list.The merge-process is stableR, in that where items from each list are equal, they remain in the original order.!CAVEAT: duplicates are preserved.GA specific instance of F.H1Take until the specified predicate is satisfied;  including the item which satisfied it.N.B.: takeWhile (not . test) would return one fewer item.I/Show a list, delimited by the specified tokens.bA specialisation of I.cA specialisation of I.J Measures the distance' between two lists (typically Strings).The operation is  commutative5; it doesn't matter about the order of the arguments.The result ranges from 0( when they're completely dissimilar, to 1 when identical. Shttps://lingpipe-blog.com/2006/12/13/code-spelunking-jaro-winkler-string-comparison.:;<)The polymorphic input list to be chunked.= The index.The polymorphic input list.0The same list, with the indexed element removed.>?@ABC`DEFGH1Predicate, used to determine the last item taken.The polymorphic input list.I+(Start-delimiter, separator, end-delimiter)The polymorphic list to show.bcJ:;<=>?@ABCDEFGHIJ;:<=>@?EDJGFCBAHI:;<=>?@ABC`DEFGHIbcJSafeK/Update a single element of the specified array.KMutator.Index.KKKSafeL2Group equal (though not necessarily adjacent; cf. 2) elements, according to the specified comparator.aThe groups are returned in ascending order, whilst their elements remain in their original order.MA specific instance of L.N:Whether the specified collection contains any equal items.L.Function to apply before testing for equality.The input data.MNLMNMLNLMNd !"#$#$ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B CDEFABCGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgehiejkejlejmejneopqresteuevewxyz{e|Xe|}yz~y(toolshed-0.17.0.2-IZ0JfFWx55MG9r6yLWNt2IToolShed.Test.ReversibleIOToolShed.Test.ReversibleEnum#ToolShed.Test.ReversibleBoundedEnumToolShed.Test.QuickCheck.Result(ToolShed.Test.QuickCheck.Arbitrary.ArrayToolShed.Test.IxToolShed.System.TimePureToolShed.System.TimeActionToolShed.System.RandomToolShed.System.FileToolShed.SelfValidateToolShed.OptionsToolShed.Data.TripleToolShed.Data.StringToolShed.Data.QuadrupleToolShed.Data.PairToolShed.Data.List.SplitsToolShed.Data.List.RunlengthToolShed.Data.ListToolShed.Data.Array.IArrayToolShed.Data.Foldable&ToolShed.Test.QuickCheck.Arbitrary.Set&ToolShed.Test.QuickCheck.Arbitrary.Map Data.Tuplecurryuncurry Data.ListgroupBy isReversiblereadPrependedWhiteSpacereadTrailingGarbage isSuccessful$fArbitraryArrayindex getCPUSecondsprintCPUSeconds randomGensshufflegenerateSelectionselectgenerateSelectionFromBounded LocatedData SearchPathlocate getFilePathgetDatagetFilefromFile SelfValidator getErrorsisValid getFirstError extractErrors$fSelfValidatorArray$fSelfValidatorMap$fSelfValidatorSet$fSelfValidator[]$fSelfValidator(,,)$fSelfValidator(,)$fSelfValidatorMaybeOptions blankValuecurry3uncurry3getFirst getSecondgetThirddeTabcurry4uncurry4 getFourthmirrorsplitsLeftFromsplitsRightFromCode getLengthgetDatumencodedecodeMatches ChunkLengthchunkexcise equalityByfindConvergenceByfindConvergencepermutationsBy permutationsnub' linearise interleavemergeBymerge takeUntil showListWithmeasureJaroDistanceadjustgatherBygather hasDuplicatesbase Text.ReadreadGHC.ShowshowGHC.EnumtoEnumfromEnumpredsuccGHC.BasefmapSplit splitsFromGHC.Listinitfstsnd Data.Foldablenullghc-prim GHC.Classes/= Data.OldListnubOrd nubWithInt GHC.TypesIntshowListWithCharshowListWithString