h&*t)      Safe-InferredM vector-splitA delimiter is a list of predicates on elements, matched by some contiguous subsequence of a list.  vector-splitTry to match a delimiter at the start of a list, either failing or decomposing the list into the portion which matched the delimiter and the remainder. vector-splitSplit on the given sublist. Equivalent to split . dropDelims . onSublist. For example::splitOn (BV.fromList "..") (BV.fromList "a..b...c....d..")["a","b",".c","","d",""]In some parsing combinator frameworks this is also known as sepBy.Note that this is the right inverse of the intercalate function from Data.List, that is, -> \xs -> (intercalate xs . splitOn xs) === idsplitOn x . intercalate x is the identity on certain lists, but it is tricky to state the precise conditions under which this holds. (For example, it is not enough to say that x does not occur in any elements of the input list. Working out why is left as an exercise for the reader.) vector-splitSplit on any of the given elements. Equivalent to split . dropDelims . oneOf. For example:splitOneOf (BV.fromList ";.,") (BV.fromList "foo,bar;baz.glurk")["foo","bar","baz","glurk"] vector-splitSplit on elements satisfying the given predicate. Equivalent to split . dropDelims . whenElt. For example:0splitWhen (<0) (BV.fromList [1,3,-4,5,7,-9,0,2])[[1,3],[5,7],[0,2]] vector-splitSplit into chunks terminated by the given subsequence. Equivalent to split . dropFinalBlank . dropDelims . onSublist. For example:4endBy (BV.fromList ";") (BV.fromList "foo;bar;baz;")["foo","bar","baz"]Note also that the lines function from Data.List is equivalent to endBy "n". vector-splitA splitting strategy that splits on any one of the given elements. For example: >>> split (oneOf (BV.fromList "xyz")) (BV.fromList "aazbxyzcxd") ["aa","z","b","x","","y","","z","c","x","d"] vector-splitSplit into chunks terminated by one of the given elements. Equivalent to split . dropFinalBlank . dropDelims . oneOf. For example::endByOneOf (BV.fromList ";,") (BV.fromList "foo;bar,baz;")["foo","bar","baz"] vector-splitSplit into "words", with word boundaries indicated by the given predicate. Satisfies words === wordsBy isSpace; equivalent to split . dropBlanks . dropDelims . whenElt. For example:0wordsBy (=='x') (BV.fromList "dogxxxcatxbirdxx")["dog","cat","bird"]  vector-splitSplit into "lines", with line boundaries indicated by the given predicate. Satisfies lines === linesBy (=='n'); equivalent to split . dropFinalBlank . dropDelims . whenElt. For example:0linesBy (=='x') (BV.fromList "dogxxxcatxbirdxx")["dog","","","cat","bird",""]  vector-splitA splitting strategy that splits on the given list, when it is encountered as an exact subsequence. For example:split (onSublist (BV.fromList "xyz")) (BV.fromList "aazbxyzcxd")["aazb","xyz","cxd"]Note that splitting on the empty list is not allowed in `vector-split`. This is a major difference between  and `vector-split`. In any case nobody should use `vector-split` to do this anyway.  vector-splitA splitting strategy that splits on any elements that satisfy the given predicate. For example:2split (whenElt (<0)) (BV.fromList [2,4,-3,6,-9,1])[[2,4],[-3],[6],[-9],[1]]  vector-splitDrop delimiters from the output (the default is to keep them). For example,5split (oneOf (BV.fromList ":")) (BV.fromList "a:b:c")["a",":","b",":","c"]split (dropDelims . oneOf (BV.fromList ":")) (BV.fromList "a:b:c") ["a","b","c"]  vector-splitKeep delimiters in the output by prepending them to adjacent chunks. For example:split (keepDelimsL . oneOf (BV.fromList "xyz")) (BV.fromList "aazbxyzcxd")["aa","zb","x","y","zc","xd"] vector-splitKeep delimiters in the output by appending them to adjacent chunks. For example:split (keepDelimsR . oneOf (BV.fromList "xyz")) (BV.fromList "aazbxyzcxd")["aaz","bx","y","z","cx","d"] vector-split?Condense multiple consecutive delimiters into one. For example:split (condense . oneOf (BV.fromList "xyz")) (BV.fromList "aazbxyzcxd") ["aa","z","b","xyz","c","x","d"]split (dropDelims . oneOf (BV.fromList "xyz")) (BV.fromList "aazbxyzcxd")["aa","b","","","c","d"]split (condense . dropDelims . oneOf (BV.fromList "xyz")) (BV.fromList "aazbxyzcxd")["aa","b","c","d"]FIXME this function is not fully compatible with the Data.List.Split version. vector-splitDon't generate a blank chunk if there is a delimiter at the beginning. For example:4split (oneOf (BV.fromList ":")) (BV.fromList ":a:b")["",":","a",":","b"]split (dropInitBlank . oneOf (BV.fromList ":")) (BV.fromList ":a:b")[":","a",":","b"] vector-splitDon't generate a blank chunk if there is a delimiter at the end. For example:split (oneOf (BV.fromList ":")) (BV.fromList "a:b:") ["a",":","b",":",""] split (dropFinalBlank . oneOf (BV.fromList ":")) (BV.fromList "a:b:") ["a",":","b",":"] vector-splitDon't generate blank chunks between consecutive delimiters. For example:7split (oneOf (BV.fromList ":")) (BV.fromList "::b:::a"))["",":","",":","b",":","",":","",":","a"]split (dropInnerBlanks . oneOf (BV.fromList ":")) (BV.fromList "::b:::a") ["",":",":","b",":",":",":","a"] vector-splitDrop all blank chunks from the output, and condense consecutive delimiters into one. Equivalent to dropInitBlank . dropFinalBlank . condense. For example:7split (oneOf (BV.fromList ":")) (BV.fromList "::b:::a"))["",":","",":","b",":","",":","",":","a"]split (dropBlanks . oneOf (BV.fromList ":")) (BV.fromList "::b:::a")["::","b",":::","a"] vector-splitMake a strategy that splits a list into chunks that all start with the given subsequence (except possibly the first). Equivalent to dropInitBlank . keepDelimsL . onSublist. For example:split (startsWith (BV.fromList "app")) (BV.fromList "applyapplicativeapplaudapproachapple")4["apply","applicative","applaud","approach","apple"] vector-splitMake a strategy that splits a list into chunks that all start with one of the given elements (except possibly the first). Equivalent to dropInitBlank . keepDelimsL . oneOf. For example:split (startsWithOneOf (BV.fromList ['A'..'Z'])) (BV.fromList "ACamelCaseIdentifier")!["A","Camel","Case","Identifier"] vector-splitMake a strategy that splits a list into chunks that all end with the given subsequence, except possibly the last. Equivalent to dropFinalBlank . keepDelimsR . onSublist. For example:split (endsWith (BV.fromList "ly")) (BV.fromList "happilyslowlygnarlylily")$["happily","slowly","gnarly","lily"] vector-splitMake a strategy that splits a list into chunks that all end with one of the given elements, except possibly the last. Equivalent to dropFinalBlank . keepDelimsR . oneOf. For example:split (condense . endsWithOneOf (BV.fromList ".,?! ")) (BV.fromList "Hi, there! How are you?")(["Hi, ","there! ","How ","are ","you?"]   Safe-Inferred) vector-split n splits a vector into length-n pieces. The last piece will be shorter if n9 does not evenly divide the length of the vector. If n <= 0,  n l< returns an infinite list of empty vectors. For example: Note that  n [] is [], not [[]]. This is intentional, and is consistent with a recursive definition of  ; it satisfies the property that 7chunksOf n xs ++ chunksOf n ys == chunksOf n (xs ++ ys) whenever n evenly divides the length of xs. vector-split=Split a vector into chunks of the given lengths. For example: splitPlaces [2,3,4] [1..20] == [[1,2],[3,4,5],[6,7,8,9]] splitPlaces [4,9] [1..10] == [[1,2,3,4],[5,6,7,8,9,10]] splitPlaces [4,9,3] [1..10] == [[1,2,3,4],[5,6,7,8,9,10]]If the input vector is longer than the total of the given lengths, then the remaining elements are dropped. If the vector is shorter than the total of the given lengths, then the result may contain fewer chunks than requested, and the last chunk may be shorter than requested. vector-split;Split a vector into chunks of the given lengths. Unlike , the output list will always be the same length as the first input argument. If the input vector is longer than the total of the given lengths, then the remaining elements are dropped. If the vector is shorter than the total of the given lengths, then the last several chunks will be shorter than requested or empty. For example: splitPlacesBlanks [2,3,4] [1..20] == [[1,2],[3,4,5],[6,7,8,9]] splitPlacesBlanks [4,9] [1..10] == [[1,2,3,4],[5,6,7,8,9,10]] splitPlacesBlanks [4,9,3] [1..10] == [[1,2,3,4],[5,6,7,8,9,10],[]]Notice the empty list in the output of the third example, which differs from the behavior of . vector-splitA useful recursion pattern for processing a list to produce a new list, often used for "chopping" up the input list. Typically chop is called with some function that will consume an initial prefix of the list and produce a value and the rest of the list.For example, many common Prelude functions can be implemented in terms of chop: group :: (Eq a) => [a] -> [[a]] group = chop (\ xs@(x:_) -> span (==x) xs) words :: String -> [String] words = filter (not . null) . chop (span (not . isSpace) . dropWhile isSpace) vector-splitDivides up an input vector into a set of subvectors, according to n and m? input specifications you provide. Each subvector will have n= items, and the start of each subvector will be offset by m items from the previous one. divvy 5 5 [1..20] == [[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20]]In the case where a source vector's trailing elements do no fill an entire subvector, those trailing elements will be dropped. :divvy 5 2 [1..10] == [[1,2,3,4,5],[3,4,5,6,7],[5,6,7,8,9]]As an example, you can generate a moving average over a vector of prices: type Prices = [Float] type AveragePrices = [Float] average :: [Float] -> Float average xs = sum xs / (fromIntegral $ length xs) simpleMovingAverage :: Prices -> AveragePrices simpleMovingAverage priceList = map average divvyedPrices where divvyedPrices = divvy 20 1 priceList !      !"#$+vector-split-1.0.0.3-FMwsPkU4fpp4oF0iZEsInOData.Vector.Split.InternalData.Vector.SplitSplittersplitsplitOn splitOneOf splitWhenendByoneOf endByOneOfwordsBylinesBy onSublistwhenElt dropDelims keepDelimsL keepDelimsRcondense dropInitBlankdropFinalBlankdropInnerBlanks dropBlanks startsWithstartsWithOneOfendsWith endsWithOneOf $fShowChunk $fEqChunkchunksOf splitPlacessplitPlacesBlankschopdivvy Delimiter matchDelim