!W      !"#$%&'()*+,-./ 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J KLMNOPQRSTUVSafe Ztoolshed2Group 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.See , .toolshedA specific instance of .toolshed:Whether the specified collection contains any equal items.See .toolshed.Function to apply before testing for equality.toolshedThe input data.None=toolshed!The type of function required by ,  .toolshed4The length of the chunks into which a list is split.toolshed2Splits 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).See .toolshed0Remove the single indexed element from the list.toolshed A convenient way to compose the -function required by  &  .toolshedTake the first element from the (potentially infinite) list, which matches the subsequent element, according to the specified function. toolshedA specific instance of . toolshedThe 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 W9 could be used to select a different item from each list. toolshedThe 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  U, in which no filtering of subsequent lists is performed after each item is selected.N.B.: differs from X/, which selects items from a single input list. toolshedA strict version of Y 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 Z.See .[toolshedA specialisation for type \. toolshedConverts a list of Pairs, into a narrower list.toolshedKInterleaves the specified lists, taking the first item from the first list.toolshedZMerge 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.toolshedA specific instance of .toolshed1Take until the specified predicate is satisfied;  including the item which satisfied it.N.B.: takeWhile (not . test) would return one fewer item.toolshed/Show a list, delimited by the specified tokens.]toolshedA specialisation of .^toolshedA specialisation of .toolshed 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.toolshed)The polymorphic input list to be chunked.toolshed The index.toolshedThe polymorphic input list.toolshed0The same list, with the indexed element removed.toolshed1Predicate, used to determine the last item taken.toolshedThe polymorphic input list.toolshed+(Start-delimiter, separator, end-delimiter)toolshedThe polymorphic list to show.    SafeAtoolshed:Describes the number of consecutive equal items in a list.toolshed Accessor.toolshed Accessor.toolshed Run-length encodes the specified list.toolshed Performs  run-length2 decoding to retrieve the original unencoded list.SafeR_toolshedHThe polymorphic pair, resulting from splitting a list of arbitrary type.`toolshed8Use the specified transformation, to generate a list of _s, from the initial one.toolshedCreate the set of all _.s, migrating left from the specified location.CAVEAT: a fails when b has been reduced to null.toolshedCreate the set of all _/s, migrating right from the specified location.CAVEAT: pattern-match against  :  fails, when c has been reduced to d.`toolshed#The function used to transform one split into the next.toolshedIndex.toolshed*The polymorphic input list from which the splits are generated.toolshed9The list of all required splits of the single input list.toolshedIndex.toolshed*The polymorphic input list from which the splits, are generated, as the index is stepped lefttoolshed9The list of all required splits of the single input list.toolshedIndex.toolshed*The polymorphic input list from which the splits. are generated, as the index is stepped right.toolshed9The list of all required splits of the single input list.SafeUtoolshed2Apply 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.Safe]1 toolshedExtends the concept of  !.toolshedExtends the concept of  ".toolshed4Access the first datum from the specified quadruple.toolshed5Access the second datum from the specified quadruple. toolshed4Access the third datum from the specified quadruple.!toolshed5Access the fourth datum from the specified quadruple."toolshedOperate on first datum.#toolshedOperate on second datum.$toolshedOperate on third datum.%toolshedOperate on third datum.  !"#$%  !"#$%Safe_l&toolshedKReplaces any embedded tab-characters with the appropriate number of spaces.&toolshed Tab-length.&&Safee>'toolshedExtends the concept of  !.(toolshedExtends the concept of  ".)toolshed1Access the first datum from the specified triple.*toolshed2Access the second datum from the specified triple.+toolshed1Access the third datum from the specified triple.,toolshedOperate on first datum.-toolshedOperate on second datum..toolshedOperate on third datum.'()*+,-.'()*+,-. Safeh4/toolshedThe required interface.0toolshedThe  undefinedc state of the data-type, which may be literal, but could alternatively be a logical starting value./0/0 Safeo(1toolshedCThe interface to which data which can self-validate should conform.4toolshed9Returns the first error only (so only call on failure of 37), since subsequent tests may be based on invalid data.5toolshed/Extracts the failed tests from those specified.2toolshed;Return either null, or the reasons why the data is invalid.3toolshed7The data which implements this interface should return e if internally consistent.1324513245 Safe~V=toolshed+A file-path, and the contents read from it.>toolshed9The ordered sequence of directories, searched for a file.?toolshedWhen 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.@toolshed Accessor.Atoolshed Accessor.Btoolshed 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.CtoolshedGReturns 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.=>?@ABC>=?BC@A SafeDtoolshed=Constructs an infinite list of independent random-generators.Etoolshed.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.FtoolshedhGenerate 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. E.Gtoolshed7Return a randomly selected element from those provided.HtoolshedaGenerate an infinite list of data, each independently selected random instances of the specified bounded type.E.g.  (generateSelectionFromBounded f' System.Random.getStdGen) :: IO [Bool] .DEFGHDEFHG SafeItoolshed`Time the specified IO-action, returning the required number of CPU-seconds and the result, as a Pair.Jtoolshed3Print the time required by the specified IO-action.IJIJSafe KtoolshedfTime 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.Ltoolshed9Print the time required by the specified pure expression.,CAVEAT: as a side-effect, the expression is deep evaluated.Ktoolshed!Arbitrary polymorphic expression.toolshed;The original expression, tagged with the CPU-seconds taken.KLKLSafeMtoolshedBChecks that implementations of Data.Array.IArray.Ix satisfy rules.MMNoneNoneNone?NonecQtoolshed1Check whether the specified result is successful.QQSafeRtoolshedChecks that composing g & h is equivalent to the identity.RRSafeStoolshedChecks that composing i & j is equivalent to the identity.SSSafeTtoolshedChecks that composing k & l is equivalent to the identity.UtoolshedChecks whether k! can skip prepended white space; T is a prerequisite.VtoolshedChecks whether kO both copes with garbage following the valid input-data, & leaves it unchanged.VtoolshedkWhether a character of garbage might reasonably be confused with valid data, & therefore should be dropped.toolshedThe datum to be written & read.toolshed%The text to follow the written datum.TUVTUVm#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKABCEFG L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f gfghijklmmmnopqrst.stupqvwpxyz{|}s~s s spxsssssss(toolshed-0.18.0.2-E1yyTsrTINx9zvGKGkvmV6ToolShed.Data.FoldableToolShed.Data.ListToolShed.Data.List.RunlengthToolShed.Data.List.SplitsToolShed.Data.PairToolShed.Data.QuadrupleToolShed.Data.StringToolShed.Data.TripleToolShed.OptionsToolShed.SelfValidateToolShed.System.FileToolShed.System.RandomToolShed.System.TimeActionToolShed.System.TimePureToolShed.Test.Ix(ToolShed.Test.QuickCheck.Arbitrary.Array&ToolShed.Test.QuickCheck.Arbitrary.Map&ToolShed.Test.QuickCheck.Arbitrary.SetToolShed.Test.QuickCheck.Result#ToolShed.Test.ReversibleBoundedEnumToolShed.Test.ReversibleEnumToolShed.Test.ReversibleIO Data.ListgroupByGHC.Exts groupWithData.List.Extra groupSortOnanySamechunksOfnubOrd Data.TuplecurryuncurrygatherBygather hasDuplicatesMatches ChunkLengthchunkexcise equalityByfindConvergenceByfindConvergencepermutationsBy permutationsnub' linearise interleavemergeBymerge takeUntil showListWithmeasureJaroDistanceCode getLengthgetDatumencodedecodesplitsLeftFromsplitsRightFrommirrorcurry4uncurry4getFirst getSecondgetThird getFourth mutateFirst mutateSecond mutateThird mutateForthdeTabcurry3uncurry3Options blankValue SelfValidator getErrorsisValid getFirstError extractErrors$fSelfValidatorArray$fSelfValidatorMap$fSelfValidatorSet$fSelfValidator[]$fSelfValidator(,,)$fSelfValidator(,)$fSelfValidatorMaybe LocatedData SearchPathlocate getFilePathgetDatagetFilefromFile randomGensshufflegenerateSelectionselectgenerateSelectionFromBounded getCPUSecondsprintCPUSecondsindex$fArbitraryArray$fArbitraryMap$fArbitrarySet isSuccessful isReversiblereadPrependedWhiteSpacereadTrailingGarbageghc-prim GHC.Classes/=base Data.OldListnubOrd nubWithInt GHC.TypesIntshowListWithCharshowListWithStringSplit splitsFromGHC.Listinitfstsnd Data.FoldablenullTrueGHC.BasefmapGHC.EnumpredsucctoEnumfromEnum Text.ReadreadGHC.Showshow