Îõ³h*Hu(      !"#$%&'0.1.0.0 Safe-Inferred)*CsuffixAllows for a choice between Int and Int32.suffixÅA pull array. Serves as a simple interface for array-like structures.#Note: For good performance, create Pull;s right before supplying them to functions in this module.suffixLLCP and RLCP arrays.suffixLongest common prefix array.suffix Suffix array. suffixO(n + k)'. Build a suffix array from a sequence.On 64-bit systems, a SuffixArray Int32 requires half the memory as a SuffixArray Int. suffix O(m \log n)<. Search for a pattern in a sequence using its suffix array.×Note: For typical inputs, the worst case is unlikely and the running time is close to  O(m + \log n). To get guaranteed  O(m + \log n) running time consider using   instead. suffixO(n)Ì. Build a longest common prefix array from a sequence and its suffix array.3The LCP array has the same length as the sequence, n. The 0!-th element of the LCP array is 0. The i"-th element of the LCP array for  0 < i < n% is the longest common prefix of the i-th and (i-1) -th suffix in the suffix array. suffixO(n)<. Build LLCP and RLCP arrays from an LCP array, for use in  searchLRLCP. suffix O(m + \log n)Ö. Search for a pattern in a sequence using its suffix array and LLCP and RLCP arrays.suffixO(n)ã. Bottom-up strict monadic fold of the suffix tree formed by the given suffix array and LCP array.ÕThe tree folded over can be considered to be equivalent to the following definition. µdata SuffixTree = Leaf Int -- ^ The suffix index | Branch Int -- ^ The string depth of this node [SuffixTree] -- ^ The children of this node This tree has exactly n+1 leaves and at most n( internal nodes. The suffix with index nß, i.e. the empty suffix, is a leaf in this tree, though it is not present in the suffix array.ÇThe calls to the leaf function and the internal node finalizer taken together form a post-order traversal of the tree. For an internal node, the values from its children are combined left-to-right.The O(n)> bound assumes that monadic bind and all given functions are O(1).suffix Pull from a  ByteString (from the bytestring package).suffix Pull from a  PrimArray (from the primitive package).suffix Pull from an Array (from the primitive package).suffix,Pull elements from any array-like structure.suffixLength n. n must be \geq 0.suffix/Indexing function. Must be valid for inputs in  [0 .. n-1] suffixThe alphabet size k.suffixInput sequence of length n. Indexing is assumed to be O(1). Elements must be in [0..k-1].suffix Output type i can be ( or ). If i is Int32, n must be <= (maxBound :: Int32). suffixSequence of length n. Indexing is assumed to be O(1). compare for a is assumed to be O(1).suffix#Suffix array for the above sequencesuffixPattern of length msuffixAn (offset, length)= pair, denoting a slice of the suffix array. Beginning at offset, length% suffixes start with the pattern. length7 is 0 if the pattern does not occur in the sequence. suffixSequence of length n. Indexing is assumed to be O(1). compare for a is assumed to be O(1).suffix#Suffix array for the above sequence suffixSequence of length n. Indexing is assumed to be O(1). compare for a is assumed to be O(1).suffix#Suffix array for the above sequencesuffix+LLCP and RLCP arrays for the above sequencesuffixPattern sequence of length msuffixAn (offset, length)= pair, denoting a slice of the suffix array. Beginning at offset, length% suffixes start with the pattern. length7 is 0 if the pattern does not occur in the sequence.suffix Leaf. The Int is the suffix index.suffixInternal node, initialize. The Int is the node's string depth.suffix;Internal node, combine with the value from a child. The Int is the node's string depth.suffixInternal node, finalize. The Int is the node's string depth.suffix&A suffix array derived from a sequencesuffix7The LCP array for the same sequence and suffix arraysuffix Size functionsuffixIndexing functionsuffix The structure         Safe-InferredW$suffixO(n). Build a suffix array from a  ByteString.On 64-bit systems, a SuffixArray Int32 requires half the memory as a SuffixArray Int.%suffix O(m \log n). Search for a pattern in a  ByteString using its suffix array.×Note: For typical inputs, the worst case is unlikely and the running time is close to  O(m + \log n). To get guaranteed  O(m + \log n) running time consider using ' instead.&suffixO(n)-. Build a longest common prefix array from a  ByteString and its suffix array.3The LCP array has the same length as the sequence, n. The 0!-th element of the LCP array is 0. The i"-th element of the LCP array for  0 < i < n% is the longest common prefix of the i-th and (i-1) -th suffix in the suffix array.'suffix O(m + \log n)Ö. Search for a pattern in a sequence using its suffix array and LLCP and RLCP arrays.$suffixInput  ByteString of length n.suffix Output type i can be Int or Int32. If i is Int32, n must be <= (maxBound :: Int32).%suffix ByteString of length nsuffixSuffix array for the above  ByteStringsuffixPattern  ByteString of length msuffixAn (offset, length)= pair, denoting a slice of the suffix array. Beginning at offset, length% suffixes start with the pattern. length7 is 0 if the pattern does not occur in the sequence.'suffix ByteString of length nsuffixSuffix array for the above  ByteStringsuffix#LLCP and RLCP arrays for the above  ByteStringsuffixPattern  ByteString of length msuffixAn (offset, length)= pair, denoting a slice of the suffix array. Beginning at offset, length% suffixes start with the pattern. length7 is 0 if the pattern does not occur in the sequence. $%& ' $%& '*      !"#    $%&'()*%suffix-0.1.0.0-DsBHdfOn7An2627NEDWkzu Data.SuffixData.Suffix.ByteStringsuffixIntnPull LRLCPArraysLCPArray SuffixArraybuildSuffixArraysearch buildLCPArraybuildLRLCPArray searchLRLCPfoldSuffixTreepullFromByteStringpullFromPrimArray pullFromArraypullFromArrayLike$fNFDataSuffixArray$fNFDataLCPArray$fNFDataLRLCPArrays $fFunctorPull $fIntnInt32 $fIntnInt$fFoldableIncr$fFoldableDecr$fEqLRLCPArrays$fOrdLRLCPArrays$fShowLRLCPArrays $fEqLCPArray $fOrdLCPArray$fShowLCPArray$fEqSuffixArray$fOrdSuffixArray$fShowSuffixArrayghc-prim GHC.TypesIntbaseGHC.IntInt32