5             ! " # $ % & ' ( ) * +,- . / 0 1 2 3 4 non-portable (BangPatterns) Provisional1Daniel Fischer <daniel.is.fischer@googlemail.com>None: finds all occurrences of any of several non-empty strict I patterns in a lazy target string. If no non-empty patterns are given, C the result is an empty list. Otherwise the result list contains H the pairs of all indices where any of the (non-empty) patterns start K and the list of all patterns starting at that index, the patterns being C represented by their (zero-based) position in the pattern list. = Empty patterns are filtered out before processing begins. List of non-empty patterns String to search List of matches 56789:56789:non-portable (BangPatterns) Provisional1Daniel Fischer <daniel.is.fischer@googlemail.com>None< finds all occurrences of any of several non-empty patterns B in a strict target string. If no non-empty patterns are given, C the result is an empty list. Otherwise the result list contains H the pairs of all indices where any of the (non-empty) patterns start K and the list of all patterns starting at that index, the patterns being C represented by their (zero-based) position in the pattern list. = Empty patterns are filtered out before processing begins. List of non-empty patterns String to search List of matches ;<=>?;<=>?  Provisional1Daniel Fischer <daniel.is.fischer@googlemail.com>None @ABCDEFGHIJ @ABCEFGHIJ @ABCDEFGHIJ non-portable (BangPatterns) Provisional1Daniel Fischer <daniel.is.fischer@googlemail.com>NoneKK- finds all indices of (possibly overlapping) 4 occurrences of the pattern in the target string. LL- finds all indices of (possibly overlapping) 4 occurrences of the pattern in the target string. # finds the starting indices of all non-overlapping occurrences F of the pattern in the target string. It is a simple wrapper around   strictifying  the pattern. # finds the starting indices of all non-overlapping occurrences F of the pattern in the target string. It is a simple wrapper around   strictifying  the pattern. # finds the starting indices of all non-overlapping occurrences ; of the pattern in the target string. It is an alias for  . # finds the starting indices of all non-overlapping occurrences ; of the pattern in the target string. It is an alias for  . KStrict pattern Lazy target string Offsets of matches LStrict pattern Strict target string Offsets of matches  Lazy pattern Lazy target string Offsets of matches  Lazy pattern Strict target string Offsets of matches Strict pattern Strict target string Offsets of matches Strict pattern Lazy target string Offsets of matches MKLKLMnon-portable (BangPatterns) Provisional1Daniel Fischer <daniel.is.fischer@googlemail.com>None8 finds the starting indices of all possibly overlapping 4 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 D non-overlapping occurrences of the pattern in the target string. E It is more efficient than removing indices from the list produced  by . Pattern to find String to search Offsets of matches Pattern to find String to search Offsets of matches non-portable (BangPatterns) Provisional1Daniel Fischer <daniel.is.fischer@googlemail.com>Nonenon-portable (BangPatterns) Provisional1Daniel Fischer <daniel.is.fischer@googlemail.com>None8 finds the starting indices of all possibly overlapping 4 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 D non-overlapping occurrences of the pattern in the target string. E It is more efficient than removing indices from the list produced  by .   transforms a lazy O into a strict  P2, to make it a suitable pattern for the searching  functions. Strict pattern to find Lazy string to search Offsets of matches Strict pattern to find Lazy string to search Offsets of matches    portable Provisional1Daniel Fischer <daniel.is.fischer@googlemail.com>None =Type class of meaningful substitutions for replace functions A on ByteStrings. Instances for strict and lazy ByteStrings are  provided here.  0 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    RSnon-portable (BangPatterns) Provisional1Daniel Fischer <daniel.is.fischer@googlemail.com>None8 finds the starting indices of all possibly overlapping 4 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]. 8 finds the starting indices of all possibly overlapping 4 occurrences of the pattern in the target string.  It is an alias for  . * If the pattern is empty, the result is [0 .. N target]. TT6 finds the indices of all non-overlapping occurrences - of the pattern in the lazy target string. U1The analogous function for a lazy target string. B The first component is generated lazily, so parts of it can be E available before the pattern is detected (or found to be absent).  Lazy pattern Lazy target string Offsets of matches Strict pattern Lazy target string Offsets of matches TStrict pattern Lazy target string Offsets of matches VPattern to replace Substitution string Target string  Lazy result UPattern to break on String to break up &Prefix and remainder of broken string WXYPattern to split on String to split List of fragments ZPattern to split on String to split List of fragments [Pattern to split on String to split List of fragments \]^_`a TVUWXYZ[TVUWXYZ[\]^_`anon-portable (BangPatterns) Provisional1Daniel Fischer <daniel.is.fischer@googlemail.com>None8 finds the starting indices of all possibly overlapping 4 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 D non-overlapping occurrences of the pattern in the target string. E It is more efficient than removing indices from the list produced  by .  pattern target splits target at the first occurrence  of pattern3. If the pattern does not occur in the target, the E second component of the result is empty, otherwise it starts with  pattern9. 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 I does not occur in the target or the first occurrence of pattern is at I the very end of target. To discriminate between those cases, use e.g.  e.   b c .  pattern = d  pat sub text/ replaces all (non-overlapping) occurrences of  pat in text with sub. If occurrences of pat overlap, the first H occurrence that does not overlap with a replaced previous occurrence " is substituted. Occurrences of pat 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 O, . which is lazily produced, without copying. < Equality of pattern and substitution is not checked, but    f . g $  pat pat text == text Dholds. 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 pattern is empty, + the result is an infinite list of empty Ps, if target  is empty but not pattern), 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 pattern is empty, the result is an  infinite list of empty Ps, otherwise the following  relations hold:    f .  pattern = d, >all 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 pattern and hence all fragments 7 with the possible exception of the first begin with pattern. A No fragment contains more than one non-overlapping occurrence  of pattern. Pattern to find String to search Offsets of matches Pattern to find String to search Offsets of matches String to search for String to search in ,Head and tail of string broken at substring String to search for String to search in /Head and tail of string broken after substring Substring to replace Replacement string String to modify  Lazy result Pattern to split on String to split Fragments of string Pattern to split on String to split Fragments of string Pattern to split on String to split Fragments of string k k non-portable (BangPatterns) Provisional1Daniel Fischer <daniel.is.fischer@googlemail.com>None 8 finds the starting indices of all possibly overlapping 4 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 D non-overlapping occurrences of the pattern in the target string. E It is more efficient than removing indices from the list produced  by .  pattern target splits target at the first occurrence  of pattern3. If the pattern does not occur in the target, the E second component of the result is empty, otherwise it starts with  pattern9. If the pattern is empty, the first component is empty. E For a non-empty pattern, the first component is generated lazily, F 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 I does not occur in the target or the first occurrence of pattern is at L 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. E For a non-empty pattern, the first component is generated lazily, F 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  but additionally indicates 1 whether the pattern is present in the target.   m .  pat =  pat  pat sub text/ replaces all (non-overlapping) occurrences of  pat in text with sub. If occurrences of pat overlap, the first H occurrence that does not overlap with a replaced previous occurrence " is substituted. Occurrences of pat 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 O, . which is lazily produced, without copying. < Equality of pattern and substitution is not checked, but     pat pat text == text 7holds (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 pattern is empty, + the result is an infinite list of empty Os, if target  is empty but not pattern), 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 pattern is empty, the result is an  infinite list of empty Os, otherwise the following  relations hold:    n .  pattern = d, >all 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 pattern and hence all fragments 7 with the possible exception of the first begin with pattern. A 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 find Lazy string to search Offsets of matches Strict pattern to find Lazy string to search Offsets of matches Strict pattern to search for Lazy string to search in ,Head and tail of string broken at substring Strict pattern to search for Lazy string to search in /Head and tail of string broken after substring Strict pattern to search for Lazy string to search in /Head and tail of string broken after substring  and presence of pattern Strict pattern to replace Replacement string Lazy string to modify  Lazy result Strict pattern to split on Lazy string to split Fragments of string Strict pattern to split on Lazy string to split Fragments of string Strict pattern to split on Lazy string to split Fragments of string !  !  !  ! non-portable (BangPatterns) Provisional1Daniel Fischer <daniel.is.fischer@googlemail.com>None ""8 finds the starting indices of all possibly overlapping 4 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 D non-overlapping occurrences of the pattern in the target string. E It is more efficient than removing indices from the list produced  by ". $$ pattern target splits target at the first occurrence  of pattern3. If the pattern does not occur in the target, the E second component of the result is empty, otherwise it starts with  pattern9. If the pattern is empty, the first component is empty. E For a non-empty pattern, the first component is generated lazily, F 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 I does not occur in the target or the first occurrence of pattern is at L 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. E For a non-empty pattern, the first component is generated lazily, F 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 % but additionally indicates 1 whether the pattern is present in the target.   m . & pat = % pat '' pat sub text/ replaces all (non-overlapping) occurrences of  pat in text with sub. If occurrences of pat overlap, the first H occurrence that does not overlap with a replaced previous occurrence " is substituted. Occurrences of pat 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 O, . which is lazily produced, without copying. < Equality of pattern and substitution is not checked, but    ' pat pat text == text 7holds (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 pattern is empty, + the result is an infinite list of empty Os, if target  is empty but not pattern), 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 pattern is empty, the result is an  infinite list of empty Os, otherwise the following  relations hold:    n . ) pattern = 'id,' >all 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 pattern and hence all fragments 7 with the possible exception of the first begin with pattern. A No fragment contains more than one non-overlapping occurrence  of pattern. "Strict pattern to find Lazy string to search Offsets of matches #Strict pattern to find Lazy string to search Offsets of matches $Strict pattern to search for Lazy string to search in ,Head and tail of string broken at substring %Strict pattern to search for Lazy string to search in /Head and tail of string broken after substring &Strict pattern to search for Lazy string to search in /Head and tail of string broken after substring  and presence of pattern 'Strict pattern to replace Replacement string Lazy string to modify  Lazy result (Strict pattern to split on Lazy string to split Fragments of string )Strict pattern to split on Lazy string to split Fragments of string *Strict pattern to split on Lazy string to split Fragments of string opq "#$%&'()* "#$%&'()* "#$%&'()*opqnon-portable (BangPatterns) Provisional1Daniel Fischer <daniel.is.fischer@googlemail.com>None++8 finds the starting indices of all possibly overlapping 4 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]. ,,8 finds the starting indices of all possibly overlapping 4 occurrences of the pattern in the target string.  It is an alias for  . * If the pattern is empty, the result is [0 .. N target]. rr6 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 pattern Strict target string Offsets of matches ,Strict pattern Strict target string Offsets of matches rStrict pattern Strict target string Offsets of matches uPattern to replace Substitution string Target string  Lazy result sPattern to break on String to break up &Prefix and remainder of broken string vwPattern to split on String to split List of fragments xPattern to split on String to split List of fragments yPattern to split on String to split List of fragments z{|}~ +,rusvwxy+,rusvwxyz{|}~non-portable (BangPatterns) Provisional1Daniel Fischer <daniel.is.fischer@googlemail.com>None+,+, non-portable (BangPatterns) Provisional1Daniel Fischer <daniel.is.fischer@googlemail.com>None--8 finds the starting indices of all possibly overlapping 4 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 D non-overlapping occurrences of the pattern in the target string. E It is more efficient than removing indices from the list produced  by -. // pattern target splits target at the first occurrence  of pattern3. If the pattern does not occur in the target, the E second component of the result is empty, otherwise it starts with  pattern9. 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 I does not occur in the target or the first occurrence of pattern is at I the very end of target. To discriminate between those cases, use e.g.  e.   b c . 0 pattern = d 11 pat sub text/ replaces all (non-overlapping) occurrences of  pat in text with sub. If occurrences of pat overlap, the first H occurrence that does not overlap with a replaced previous occurrence " is substituted. Occurrences of pat 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 O, . which is lazily produced, without copying. < Equality of pattern and substitution is not checked, but    (f . g $ 1 pat pat text) == text Dholds. 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 pattern is empty, + the result is an infinite list of empty Ps, if target  is empty but not pattern), 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 pattern is empty, the result is an  infinite list of empty Ps, otherwise the following  relations hold:    f . 3 pattern = d, >all 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 pattern and hence all fragments 7 with the possible exception of the first begin with pattern. A No fragment contains more than one non-overlapping occurrence  of pattern. -Pattern to find String to search Offsets of matches .Pattern to find String to search Offsets of matches /String to search for String to search in ,Head and tail of string broken at substring 0String to search for String to search in /Head and tail of string broken after substring 1Substring to replace Replacement string String to modify  Lazy result 2Pattern to split on String to split Fragments of string 3Pattern to split on String to split Fragments of string 4Pattern to split on String to split Fragments 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.4%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.0.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