A             ! " # $ % & ' ()*+,-./0123456789:;<=>?@ Safe-InferredChecks that composing A & B is equivalent to the identity.  Safe-InferredChecks that composing C & D is equivalent to the identity.  Safe-InferredChecks that composing E & F is equivalent to the identity. NoneGGNoneHHNoneIINoneJJ Safe-Inferredg Time 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. ; Print 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-Inferred`Time the specified IO-action, returning the required number of CPU-seconds and the result, as a Pair. 4Print the time required by the specified IO-action.  Safe-Inferred>Constructs an infinite list of independent random-generators. / Shuffles the specified finite list, using the  Fisher-Yates algorithm;  1http://en.wikipedia.org/wiki/Fisher-Yates_shuffle. f The resulting list has the same length and constituents as the original; only the order has changed. 0 The input list is traversed, but the items aren' t evaluated. j Generate 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. . <Return a randomly selected element from the specified list. b Generate an infinite list of data, each independently selected random instances of the specified bounded type.  E.g.  (generateSelectionFromBounded K% System.Random.getStdGen) :: IO [Bool] .      Safe-Inferred ,A file-path, and the contents read from it. :The ordered sequence of directories, searched for a file.  When supplied with an absolute file-path, the  search-path[ 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. H Returns the polymorphic data, read from the first matching file on the  search-path., along with the path from which it was read. [ Returns an error on failure to parse the contents of the first matching file found on the  search-path.      Safe-InferredDThe interface to which data which can self-validate should conform. 9Returns the first error only (so only call on failure of 8), since subsequent tests may be based on invalid data. .Filters failed tests amongst those specified. <Return either null, or the reasons why the data is invalid. 7The data which implements this interface should return L if internally consistent. MNOPQRS MNOPQRS  Safe-InferredBAn interface to which data which have a default-value can adhere. $The default value of the data-type. TUTU  Safe-InferredSimilar to the class . The  undefinedd state of the data-type, which may be literal, but could alternatively be a logical starting value.   Safe-InferredExtends the concept of . Extends the concept of . 2Access the first datum from the specified triple. 3Access the second datum from the specified triple. 2Access the third datum from the specified triple.      Safe-Inferred!Extends the concept of . "Extends the concept of . #5Access the first datum from the specified quadruple. $6Access the second datum from the specified quadruple. %5Access the third datum from the specified quadruple. &6Access the fourth datum from the specified quadruple. !"#$%&!"#$%&!"#$%&!"#$%&  Safe-Inferred'3 Apply the same transformation to both halves of a Pair. 7 CAVEAT: the pair is required to have identical types. '''' Safe-InferredVIThe polymorphic pair, resulting from splitting a list of arbitrary type. W8Use the specified transformation, to generate a list of Vs, from the initial one. ( Create the set of all V/s, migrating left from the specified location.  CAVEAT: X fails when Y has been reduced to null. ) Create the set of all V0s, 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. :The list of all required splits of the single input list. (Index. *The polymorphic input list from which the splits- are generated, as the index is stepped left :The list of all required splits of the single input list. )Index. *The polymorphic input list from which the splits/ are generated, as the index is stepped right. :The list of all required splits of the single input list. ()()VW() Safe-Inferred*;Describes the number of consecutive equal items in a list. + Accessor. , Accessor. - Run-length encodes the specified list. . Performs  run-length3 decoding to retrieve the original unencoded list. *+,-.*+,-.*-.+,*+,-.None/!The type of function required by 4, 6. 05The length of the chunks into which a list is split. 14 Splits a list into chunks of the specified length. 8 The 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. 7 CAVEAT: a similar function is available in the module Data.List.Split, though this one checks for  (chunkLength < 0). 21Remove the single indexed element from the list. 3 A convenient way to compose the /-function required by 4 & 6. 4Take the first element from the (potentially infinite) list, which matches the subsequent element, according to the specified function. 5A specific instance of 4. 6 The list of all permutations, generated by selecting any one datum from each sub-list in turn, from the specified list of lists. W As each item is selected, the remaining lists are filtered according to the specified / -function.  Thus \: could be used to select a different item from each list. 7 The 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 6V, in which no filtering of subsequent lists is performed after each item is selected.  NB: differs from ]0, which selects items from a single input list. 8 A strict version of ^ with better time-complexity. l CAVEAT: the specified list must be finite, since the entire set is constructed before streaming to a list. / CAVEAT: it sorts the output as a side-effect, &2 consequently it requires a type which implements _. `A specialisation for type a. 9Converts a list of Pairs, into a narrower list. :\ Merge two sorted lists, according to the specified order, to product a single sorted list.  The merge-process is stableS, in that where items from each list are equal, they remain in the original order. # CAVEAT: duplicates are preserved. ;A specific instance of :. <2 Take until the specified predicate is satisfied;  including the item which satisfied it.  NB: takeWhile (not . test) would return one fewer item. =0Show a list, delimited by the specified tokens. bA specialisation of =. cA specialisation of =. /01*The polymorphic input list to be chunked. 2 The index. The polymorphic input list. 1The same list, with the indexed element removed. 345678`9:;<2Predicate, used to determine the last item taken. The polymorphic input list. =,(Start-delimiter, separator, end-delimiter) The polymorphic list to show. bc/0123456789:;<=0/123549;:876<=/012345678`9:;<=bc Safe-Inferred>4 Group equal (though not necessarily adjacent; c.f. 3) elements, according to the specified comparator. c The groups are returned in ascending order, whilst their elements remain in their original order. ?A specific instance of >. @;Whether the specified collection contains any equal items. >?@>?@?>@>?@d !"#$%&'()*+,-./0 1 2 3 4 5 6 7 8 9 : ; 7 8 9 < =>?@ABCDEFGHIJKLMNOPQRSTUVWXYWZ[W\]W\^W\_W\`abccWdefghijklmno p qrsWtuWvWwWtxfyzWMW{fy|}fg~toolshed-0.15.0.0ToolShed.Test.ReversibleIOToolShed.Test.ReversibleEnum#ToolShed.Test.ReversibleBoundedEnumToolShed.System.TimePureToolShed.System.TimeActionToolShed.System.RandomToolShed.System.FileToolShed.SelfValidateToolShed.DefaultableToolShed.OptionsToolShed.Data.TripleToolShed.Data.QuadrupleToolShed.Data.PairToolShed.Data.List.SplitsToolShed.Data.List.RunlengthToolShed.Data.ListToolShed.Data.Foldable&ToolShed.Test.QuickCheck.Arbitrary.Set&ToolShed.Test.QuickCheck.Arbitrary.Map,ToolShed.Test.QuickCheck.Arbitrary.ArrayElem(ToolShed.Test.QuickCheck.Arbitrary.ArrayText.Regex.Base.RegexLike RegexOptions Data.Tuplecurryuncurry Data.ListgroupBy isReversible getCPUSecondsprintCPUSeconds randomGensshufflegenerateSelectionselectgenerateSelectionFromBounded LocatedData SearchPathlocate getFilePathgetDatagetFilefromFile SelfValidator getErrorsisValid getFirstError extractErrors Defaultable defaultValueOptions blankValuecurry3uncurry3getFirst getSecondgetThirdcurry4uncurry4 getFourthmirrorsplitsLeftFromsplitsRightFromCode getLengthgetDatumencodedecodeMatches ChunkLengthchunkexcise equalityByfindConvergenceByfindConvergencepermutationsBy permutationsnub' linearisemergeBymerge takeUntil showListWithgatherBygather hasDuplicatesbase Text.ReadreadGHC.ShowshowGHC.EnumtoEnumfromEnumpredsucc$fArbitrarySet$fArbitraryMap$fArbitraryArrayGHC.Basefmapghc-prim GHC.TypesTrue$fSelfValidatorArray$fSelfValidatorMap$fSelfValidatorSet$fSelfValidator[]$fSelfValidator(,,)$fSelfValidator(,)$fSelfValidatorMaybe$fDefaultable(,,)$fDefaultable(,)Split splitsFromGHC.Listinitfstsndnull GHC.Classes/=nubOrd nubWithIntIntshowListWithCharshowListWithString