S5             ! " # $ % & ' ( ) * +,- . / 0 1 2 3 4 (c) 2010 Daniel FischerBSD31Daniel Fischer <daniel.is.fischer@googlemail.com> Provisionalnon-portable (BangPatterns)None finds all occurrences of any of several non-empty strict patterns in a lazy target string. If no non-empty patterns are given, the result is an empty list. Otherwise the result list contains the pairs of all indices where any of the (non-empty) patterns start and the list of all patterns starting at that index, the patterns being represented by their (zero-based) position in the pattern list. Empty patterns are filtered out before processing begins.List of non-empty patternsString to searchList of matches56789:56789:(c) 2010 Daniel FischerBSD31Daniel Fischer <daniel.is.fischer@googlemail.com> Provisionalnon-portable (BangPatterns)None finds all occurrences of any of several non-empty patterns in a strict target string. If no non-empty patterns are given, the result is an empty list. Otherwise the result list contains the pairs of all indices where any of the (non-empty) patterns start and the list of all patterns starting at that index, the patterns being represented by their (zero-based) position in the pattern list. Empty patterns are filtered out before processing begins.List of non-empty patternsString to searchList of matches;<=>?;<=>? Daniel FischerBSD31Daniel Fischer <daniel.is.fischer@googlemail.com> ProvisionalNone3 @ABCDEFGHIJ @ABCEFGHIJ @ABCDEFGHIJ PJustin Bailey Chris Kuklewicz Daniel FischerBSD31Daniel Fischer <daniel.is.fischer@googlemail.com> Provisionalnon-portable (BangPatterns)NoneKK` finds all indices of (possibly overlapping) occurrences of the pattern in the target string.LL` finds all indices of (possibly overlapping) occurrences of the pattern in the target string.# finds the starting indices of all non-overlappingV occurrences of the pattern in the target string. It is a simple wrapper around  strictifying the pattern.# finds the starting indices of all non-overlappingV occurrences of the pattern in the target string. It is a simple wrapper around  strictifying the pattern.# finds the starting indices of all non-overlappingK occurrences of the pattern in the target string. It is an alias for .# finds the starting indices of all non-overlappingK occurrences of the pattern in the target string. It is an alias for .KStrict patternLazy target stringOffsets of matchesLStrict patternStrict target stringOffsets of matches Lazy patternLazy target stringOffsets of matches Lazy patternStrict target stringOffsets of matchesStrict patternStrict target stringOffsets of matchesStrict patternLazy target stringOffsets of matchesMKLKLMPJustin Bailey Chris Kuklewicz Daniel FischerBSD31Daniel Fischer <daniel.is.fischer@googlemail.com> Provisionalnon-portable (BangPatterns)None finds the starting indices of all possibly overlapping occurrences of the pattern in the target string. If the pattern is empty, the result is [0 .. N target]. finds the starting indices of all non-overlapping occurrences of the pattern in the target string. It is more efficient than removing indices from the list produced by .Pattern to findString to searchOffsets of matchesPattern to findString to searchOffsets of matchesPJustin Bailey Chris Kuklewicz Daniel FischerBSD31Daniel Fischer <daniel.is.fischer@googlemail.com> Provisionalnon-portable (BangPatterns)NonePJustin Bailey Chris Kuklewicz Daniel FischerBSD31Daniel Fischer <daniel.is.fischer@googlemail.com> Provisionalnon-portable (BangPatterns)None finds the starting indices of all possibly overlapping occurrences of the pattern in the target string. If the pattern is empty, the result is [0 .. N target].   finds the starting indices of all non-overlapping occurrences of the pattern in the target string. It is more efficient than removing indices from the list produced by .   transforms a lazy O into a strict P?, to make it a suitable pattern for the searching functions.Strict pattern to findLazy string to searchOffsets of matches Strict pattern to findLazy string to searchOffsets of matches    Daniel FischerBSD31Daniel Fischer <daniel.is.fischer@googlemail.com> ProvisionalportableNone Type class of meaningful substitutions for replace functions on ByteStrings. Instances for strict and lazy ByteStrings are provided here.  / transforms a value to a substitution function.   sub lazyBS, shall prepend infinitely many copies of sub to lazyBS: without entering an infinite loop in case of an empty sub , so e.g.    "" "ab" == "ab" shall (quickly) evaluate to Q. For non-empty sub-, the cycle shall be constructed efficiently. RS    RS0Daniel Fischer Chris KuklewiczBSD31Daniel Fischer <daniel.is.fischer@googlemail.com> Provisionalnon-portable (BangPatterns)None finds the starting indices of all possibly overlapping occurrences of the pattern in the target string. It is a simple wrapper for  ,. If the pattern is empty, the result is [0 .. N target]. finds the starting indices of all possibly overlapping occurrences of the pattern in the target string. It is an alias for  ,. If the pattern is empty, the result is [0 .. N target].TTb finds the indices of all non-overlapping occurrences of the pattern in the lazy target string.UThe analogous function for a lazy target string. The first component is generated lazily, so parts of it can be available before the pattern is detected (or found to be absent). Lazy patternLazy target stringOffsets of matchesStrict patternLazy target stringOffsets of matchesTStrict patternLazy target stringOffsets of matchesVPattern to replaceSubstitution string Target string Lazy resultUPattern to break onString to break up%Prefix and remainder of broken stringWXYPattern to split onString to splitList of fragmentsZPattern to split onString to splitList of fragments[Pattern to split onString to splitList of fragments\]^_`a TVUWXYZ[TVUWXYZ[\]^_`aDaniel FischerBSD31Daniel Fischer <daniel.is.fischer@googlemail.com> Provisionalnon-portable (BangPatterns)None finds the starting indices of all possibly overlapping occurrences of the pattern in the target string. If the pattern is empty, the result is [0 .. N target]. finds the starting indices of all non-overlapping occurrences of the pattern in the target string. It is more efficient than removing indices from the list produced by . pattern target splits target at the first occurrence of pattern{. If the pattern does not occur in the target, the second component of the result is empty, otherwise it starts with pattern8. If the pattern is empty, the first component is empty.  b c .  pattern = d  pattern target splits target# behind the first occurrence of pattern. An empty second component means that either the pattern does not occur in the target or the first occurrence of pattern is at the very end of target. To discriminate between those cases, use e.g. e.  b c .  pattern = d  pat sub text2 replaces all (non-overlapping) occurrences of pat in text with sub. If occurrences of pat~ overlap, the first occurrence that does not overlap with a replaced previous occurrence is substituted. Occurrences of patE arising from a substitution will not be substituted. For example:  % "ana" "olog" "banana" = "bologna" ! "ana" "o" "bananana" = "bono" ! "aab" "abaa" "aaabb" = "aabaab" The result is a lazy Ok, which is lazily produced, without copying. Equality of pattern and substitution is not checked, but  f . g $  pat pat text == text cholds. If the pattern is empty but not the substitution, the result is equivalent to (were they hs) i sub.For non-empty pat and sub a strict P,  j .  sub .  pat =  pat sub 0and analogous relations hold for other types of sub. pattern target splits target, at each (non-overlapping) occurrence of pattern , removing pattern. If pattern6 is empty, the result is an infinite list of empty Ps, if target is empty but not patternI, the result is an empty list, otherwise the following relations hold:  f .  pat .  pat = d, N (" pattern target) == N ( pattern target) + 1, 4no fragment in the result contains an occurrence of pattern. pattern target splits target/ after each (non-overlapping) occurrence of pattern. If pattern6 is empty, the result is an infinite list of empty P-s, otherwise the following relations hold:  f .  pattern = d, Aall fragments in the result except possibly the last end with pattern3, no fragment contains more than one occurrence of pattern. is like , except that target' is split before each occurrence of patternP and hence all fragments with the possible exception of the first begin with patternI. No fragment contains more than one non-overlapping occurrence of pattern. Pattern to findString to searchOffsets of matchesPattern to findString to searchOffsets of matchesString to search forString to search in+Head and tail of string broken at substringString to search forString to search in.Head and tail of string broken after substringSubstring to replaceReplacement stringString to modify Lazy resultPattern to split onString to splitFragments of stringPattern to split onString to splitFragments of stringPattern to split onString to splitFragments of stringk k 0Daniel Fischer Chris KuklewiczBSD31Daniel Fischer <daniel.is.fischer@googlemail.com> Provisionalnon-portable (BangPatterns)None  finds the starting indices of all possibly overlapping occurrences of the pattern in the target string. If the pattern is empty, the result is [0 .. N target]. finds the starting indices of all non-overlapping occurrences of the pattern in the target string. It is more efficient than removing indices from the list produced by . pattern target splits target at the first occurrence of pattern{. If the pattern does not occur in the target, the second component of the result is empty, otherwise it starts with pattern. If the pattern is empty, the first component is empty. For a non-empty pattern, the first component is generated lazily, thus the first parts of it can be available before the pattern has been found or determined to be absent.  b l .  pattern = d  pattern target splits target# behind the first occurrence of pattern. An empty second component means that either the pattern does not occur in the target or the first occurrence of pattern is at the very end of target. If you need to discriminate between those cases, use breakFindAfter. If the pattern is empty, the first component is empty. For a non-empty pattern, the first component is generated lazily, thus the first parts of it can be available before the pattern has been found or determined to be absent.  b l .  pattern = d  does the same as L but additionally indicates whether the pattern is present in the target.  m .  pat =  pat  pat sub text2 replaces all (non-overlapping) occurrences of pat in text with sub. If occurrences of pat~ overlap, the first occurrence that does not overlap with a replaced previous occurrence is substituted. Occurrences of patE arising from a substitution will not be substituted. For example:  % "ana" "olog" "banana" = "bologna" ! "ana" "o" "bananana" = "bono" ! "aab" "abaa" "aaabb" = "aabaab" The result is a lazy Ok, which is lazily produced, without copying. Equality of pattern and substitution is not checked, but   pat pat text == text holds (the internal structure is generally different). If the pattern is empty but not the substitution, the result is equivalent to (were they hs)  cycle sub.For non-empty pat and sub a lazy O,  n .  sub .  pat =  pat sub 0and analogous relations hold for other types of sub. pattern target splits target, at each (non-overlapping) occurrence of pattern , removing pattern. If pattern6 is empty, the result is an infinite list of empty Os, if target is empty but not patternP, the result is an empty list, otherwise the following relations hold (where patL is the lazy O corresponding to pat):  n .  patL .  pat = d, N (" pattern target) == N ( pattern target) + 1, 4no fragment in the result contains an occurrence of pattern. pattern target splits target/ after each (non-overlapping) occurrence of pattern. If pattern6 is empty, the result is an infinite list of empty O-s, otherwise the following relations hold:  n .  pattern = d, Aall fragments in the result except possibly the last end with pattern3, no fragment contains more than one occurrence of pattern.   is like , except that target' is split before each occurrence of patternP and hence all fragments with the possible exception of the first begin with patternI. No fragment contains more than one non-overlapping occurrence of pattern.!! converts a lazy O to a strict P" to make it a suitable pattern. Strict pattern to findLazy string to searchOffsets of matchesStrict pattern to findLazy string to searchOffsets of matchesStrict pattern to search forLazy string to search in+Head and tail of string broken at substringStrict pattern to search forLazy string to search in.Head and tail of string broken after substringStrict pattern to search forLazy string to search inIHead and tail of string broken after substring and presence of patternStrict pattern to replaceReplacement stringLazy string to modify Lazy resultStrict pattern to split onLazy string to splitFragments of stringStrict pattern to split onLazy string to splitFragments of string Strict pattern to split onLazy string to splitFragments of string!  !  !  ! Daniel FischerBSD31Daniel Fischer <daniel.is.fischer@googlemail.com> Provisionalnon-portable (BangPatterns)None "" finds the starting indices of all possibly overlapping occurrences of the pattern in the target string. If the pattern is empty, the result is [0 .. N target].## finds the starting indices of all non-overlapping occurrences of the pattern in the target string. It is more efficient than removing indices from the list produced by ".$$ pattern target splits target at the first occurrence of pattern{. If the pattern does not occur in the target, the second component of the result is empty, otherwise it starts with pattern. If the pattern is empty, the first component is empty. For a non-empty pattern, the first component is generated lazily, thus the first parts of it can be available before the pattern has been found or determined to be absent.  b l . $ pattern = d %% pattern target splits target# behind the first occurrence of pattern. An empty second component means that either the pattern does not occur in the target or the first occurrence of pattern is at the very end of target. If you need to discriminate between those cases, use breakFindAfter. If the pattern is empty, the first component is empty. For a non-empty pattern, the first component is generated lazily, thus the first parts of it can be available before the pattern has been found or determined to be absent.  b l . % pattern = d && does the same as %L but additionally indicates whether the pattern is present in the target.  m . & pat = % pat '' pat sub text2 replaces all (non-overlapping) occurrences of pat in text with sub. If occurrences of pat~ overlap, the first occurrence that does not overlap with a replaced previous occurrence is substituted. Occurrences of patE arising from a substitution will not be substituted. For example:  '% "ana" "olog" "banana" = "bologna" '! "ana" "o" "bananana" = "bono" '! "aab" "abaa" "aaabb" = "aabaab" The result is a lazy Ok, which is lazily produced, without copying. Equality of pattern and substitution is not checked, but  ' pat pat text == text holds (the internal structure is generally different). If the pattern is empty but not the substitution, the result is equivalent to (were they hs)  cycle sub.For non-empty pat and sub a lazy O,  n .  sub . ( pat = ' pat sub 0and analogous relations hold for other types of sub.(( pattern target splits target, at each (non-overlapping) occurrence of pattern , removing pattern. If pattern6 is empty, the result is an infinite list of empty Os, if target is empty but not patternP, the result is an empty list, otherwise the following relations hold (where patL is the lazy O corresponding to pat):  n .  patL . ( pat = d, N ((" pattern target) == N (# pattern target) + 1, 4no fragment in the result contains an occurrence of pattern.)) pattern target splits target/ after each (non-overlapping) occurrence of pattern. If pattern6 is empty, the result is an infinite list of empty O-s, otherwise the following relations hold:  n . ) pattern = 'id,' Aall fragments in the result except possibly the last end with pattern3, no fragment contains more than one occurrence of pattern.** is like ), except that target' is split before each occurrence of patternP and hence all fragments with the possible exception of the first begin with patternI. No fragment contains more than one non-overlapping occurrence of pattern. "Strict pattern to findLazy string to searchOffsets of matches#Strict pattern to findLazy string to searchOffsets of matches$Strict pattern to search forLazy string to search in+Head and tail of string broken at substring%Strict pattern to search forLazy string to search in.Head and tail of string broken after substring&Strict pattern to search forLazy string to search inIHead and tail of string broken after substring and presence of pattern'Strict pattern to replaceReplacement stringLazy string to modify Lazy result(Strict pattern to split onLazy string to splitFragments of string)Strict pattern to split onLazy string to splitFragments of string*Strict pattern to split onLazy string to splitFragments of stringopq "#$%&'()* "#$%&'()* "#$%&'()*opq0Daniel Fischer Chris KuklewiczBSD31Daniel Fischer <daniel.is.fischer@googlemail.com> Provisionalnon-portable (BangPatterns)None++ finds the starting indices of all possibly overlapping occurrences of the pattern in the target string. It is a simple wrapper for  ,. If the pattern is empty, the result is [0 .. N target].,, finds the starting indices of all possibly overlapping occurrences of the pattern in the target string. It is an alias for  ,. If the pattern is empty, the result is [0 .. N target].rrd finds the indices of all non-overlapping occurrences of the pattern in the Strict target string.s(This function has the same semantics as t! but is generally much faster.+ Lazy patternStrict target stringOffsets of matches,Strict patternStrict target stringOffsets of matchesrStrict patternStrict target stringOffsets of matchesuPattern to replaceSubstitution string Target string Lazy resultsPattern to break onString to break up%Prefix and remainder of broken stringvwPattern to split onString to splitList of fragmentsxPattern to split onString to splitList of fragmentsyPattern to split onString to splitList of fragmentsz{|}~ +,rusvwxy+,rusvwxyz{|}~0Daniel Fischer Chris KuklewiczBSD31Daniel Fischer <daniel.is.fischer@googlemail.com> Provisionalnon-portable (BangPatterns)None+,+, <Daniel Fischer (2007-2011) Chris KuklewiczBSD31Daniel Fischer <daniel.is.fischer@googlemail.com> Provisionalnon-portable (BangPatterns)None-- finds the starting indices of all possibly overlapping occurrences of the pattern in the target string. If the pattern is empty, the result is [0 .. N target]. In general,  .  $ - pat target( is a much more efficient version of ... finds the starting indices of all non-overlapping occurrences of the pattern in the target string. It is more efficient than removing indices from the list produced by -.// pattern target splits target at the first occurrence of pattern{. If the pattern does not occur in the target, the second component of the result is empty, otherwise it starts with pattern8. If the pattern is empty, the first component is empty.  b c . / pattern = d 00 pattern target splits target# behind the first occurrence of pattern. An empty second component means that either the pattern does not occur in the target or the first occurrence of pattern is at the very end of target. To discriminate between those cases, use e.g. e.  b c . 0 pattern = d 11 pat sub text2 replaces all (non-overlapping) occurrences of pat in text with sub. If occurrences of pat~ overlap, the first occurrence that does not overlap with a replaced previous occurrence is substituted. Occurrences of patE arising from a substitution will not be substituted. For example:  1% "ana" "olog" "banana" = "bologna" 1! "ana" "o" "bananana" = "bono" 1! "aab" "abaa" "aaabb" = "aabaab" The result is a lazy Ok, which is lazily produced, without copying. Equality of pattern and substitution is not checked, but  (f . g $ 1 pat pat text) == text cholds. If the pattern is empty but not the substitution, the result is equivalent to (were they hs) i sub.For non-empty pat and sub a strict P,  j .  sub . 2 pat = 1 pat sub 0and analogous relations hold for other types of sub.22 pattern target splits target, at each (non-overlapping) occurrence of pattern , removing pattern. If pattern6 is empty, the result is an infinite list of empty Ps, if target is empty but not patternI, the result is an empty list, otherwise the following relations hold:  f .  pat . 2 pat = d, N (2" pattern target) == N (. pattern target) + 1, 4no fragment in the result contains an occurrence of pattern.33 pattern target splits target/ after each (non-overlapping) occurrence of pattern. If pattern6 is empty, the result is an infinite list of empty P-s, otherwise the following relations hold:  f . 3 pattern = d, Aall fragments in the result except possibly the last end with pattern3, no fragment contains more than one occurrence of pattern.44 is like 3, except that target' is split before each occurrence of patternP and hence all fragments with the possible exception of the first begin with patternI. No fragment contains more than one non-overlapping occurrence of pattern.-Pattern to findString to searchOffsets of matches.Pattern to findString to searchOffsets of matches/String to search forString to search in+Head and tail of string broken at substring0String to search forString to search in.Head and tail of string broken after substring1Substring to replaceReplacement stringString to modify Lazy result2Pattern to split onString to splitFragments of string3Pattern to split onString to splitFragments of string4Pattern to split onString to splitFragments of string-./01234-./01234-./01234     !"     #  ! "      #  ! "      ! "$%&'()$%&'* + , - . /  0 1 2 3 4 5 6 789:;<=;>=?@ABCDEFGHIJKLMNOPQ8RS;TU8VW;TX;TY;Z[8V\89];Z^_;ZU8R`;ZY L a bcd;Tefghij_klmno?pq89r;Tststringsearch-0.3.6.6%Data.ByteString.Lazy.Search.KarpRabin Data.ByteString.Search.KarpRabin'Data.ByteString.Search.KnuthMorrisPrattData.ByteString.Search.KMPData.ByteString.Lazy.Search.KMP#Data.ByteString.Search.Substitution!Data.ByteString.Search.BoyerMooreData.ByteString.Search.DFAData.ByteString.Lazy.SearchData.ByteString.Lazy.Search.DFAData.ByteString.Search%Data.ByteString.Search.Internal.Utils0Data.ByteString.Search.Internal.KnuthMorrisPrattnonOverlappingIndices/Data.ByteString.Lazy.Search.Internal.BoyerMooreindices Data.List intersperse*Data.ByteString.Search.Internal.BoyerMoore indicesOfAnymatchLLmatchLSmatchSSmatchSL strictify Substitution substitution prependCyclebreakOn breakAfterreplacesplit splitKeepEndsplitKeepFrontbreakFindAfterrehash1rehash2rehash3rehash4 lazyMatchercheckFut strictMatcher automaton kmpBordersoccurs suffShifts suffLengthsldropltakelsplitreleasekeepindicesLindicesSmatcherbaseGHC.Listlengthbytestring-0.10.4.0Data.ByteString.Lazy.Internal ByteStringData.ByteString.Internalghc-prim GHC.TypesTrue$fSubstitutionByteString$fSubstitutionByteString0matchNOLbreakSubstringL replaceAllL breakAfterLbreakFindAfterL splitKeepEndLsplitKeepFrontL splitDropL lazySearcher lazyBreaklazySplitKeepFrontlazySplitKeepEnd lazySplitDroplazyRepl Data.TupleuncurryData.ByteStringappendGHC.Baseid isSuffixOfconcatData.ByteString.LazytoChunksStringcycle fromChunksstrictSearcherfst lazyBreakerrgomatchNOSbreakSubstringSbreakSubstring replaceAllS breakAfterS splitKeepEndSsplitKeepFrontS splitDropS strictBreakstrictSplitKeepFrontstrictSplitKeepEndstrictSplitDrop strictRepl GHC.Classesnotnull isInfixOf