!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 2234567Yield an array of units 8&Interleave the elements of two arrays 9Repeat an array n times :;<=>?@ABDefault back permute J The values of the index-value pairs are written into the position in the > result array that is indicated by the corresponding index. H All positions not covered by the index-value pairs will have the value C determined by the initialiser function for that index position. length of result array initialiser function index-value pairs CCExtract all elements from an array according to a given flag array DEF)Array reduction proceeding from the left G>Array reduction proceeding from the left for non-empty arrays HKArray reduction that requires an associative combination function with its  unit IIReduction of a non-empty array which requires an associative combination  function JKL+Prefix scan proceedings from left to right M?Prefix scan of a non-empty array proceeding from left to right NDPrefix scan proceeding from left to right that needs an associative & combination function with its unit OJPrefix scan of a non-empty array proceeding from left to right that needs ' an associative combination function PQRSTUVWXYZ[\  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\/.-10,+%$ 7#*89:;<)('&?@ABCDEFGJHIKLMNOP STQR"!UVWXY56>=Z[234*2343456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\Abstract selector.  Contains both the tags and indices arrays outlined above. number of tags with value 0 number of tags with value 1 ]O(1). Construct a selector.  tags array indices array *number of elements taken from first array +number of elements taken from second array ^?O(1). Get the number of elements represented by this selector. 5 This is the length of the array returned by D. _(O(1). Get the tags array of a selector. `+O(1). Get the indices array of a selector. aJO(1). Get the number of elements that will be taken from the first array. bKO(1). Get the number of elements that will be taken from the second array. cEO(n). Compute the source index for each element of the result array. \]^_`abc\]^_`abc\]^_`abcd>Segment descriptors represent the structure of nested arrays. X For each segment, it stores the length and the starting index in the flat data array.  Example:  - flat array data: [1, 2, 3, 4, 5, 6, 7, 8] . (segmentation) ---- ------- - ----  segd lengths: [2, 3, 1, 2]  indices: [0, 2, 5, 6]  elements: 8 length of each segment 1starting index of each segment in the flat array +total number of elements in the flat array e*O(1). Construct a new segment descriptor. length of each segment starting index of each segment +total number of elements in the flat array fGO(1). Yield an empty segment descriptor, with no elements or segments. g,O(1). Yield a singleton segment descriptor. A The single segment covers the given number of elements. h8O(n). Convert a length array into a segment descriptor. CThe array contains the length of each segment, and we compute the A indices from that. Runtime is O(n) in the number of segments. i,O(1). Yield the overall number of segments. j4O(1). Yield the lengths of the individual segments. k9O(1). Yield the segment indices of a segment descriptor. l)O(1). Yield the number of data elements. mPO(n). Extract a slice of a segment descriptor, avoiding copying where possible. HWe can share the segment lengths with the original segment descriptor, C but still need to recompute the starting indices of each. Hence 9 runtime is O(n) in the number of segments sliced out. ENOTE: In the new segment descriptor, the starting index of the first  segment will be 0. source segment descriptor index of first segment  number of segments to slice out nCO(n). Extract a slice of a segment descriptor, copying everything. In contrast to m%, this function copies the array of H segment lengths as well as recomputing the starting indices of each. ENOTE: In the new segment descriptor, the starting index of the first  segment will be 0. source segment desciptor index of the first segment "number of segments to extract out defghijklmn defghijklmn defghijklmnopqrsopqrsopqrst3Segmented array reduction proceeding from the left uCSegmented array reduction that requires an associative combination  function with its unit KSegmented array reduction from left to right with non-empty subarrays only vFSegmented array reduction with non-empty subarrays and an associative  combination function w3Merge two segmented arrays according to flag array xRegular arrar reduction tuvwxtuvwxy>Compute the boolean AND of all segments in a segmented array. z=Compute the boolean OR of all segments in a segmented array. {2Compute the segmented sum of an array of numerals |6Compute the segmented product of an array of numerals }/Determine the maximum element in each subarray ~/Determine the minimum element in each subarray 2Compute the segmented sum of an array of numerals yz{|}~yz{|}~ dehijklopqrstuvwxyz{|}~opqsrtuvxwyz{|}~dijklheUNGenerate a new array given its length and a function to compute each element. ,O(n), Compute a selector from a tags array. ?Select the elements of an array that have a corresponding tag.   packByTag [12, 24, 42, 93] [1, 0, 0, 1] 0  = [24, 42]  data values  tag values the tag of values to select data values that had that tag ICount the number of elements in array that are equal to the given value. LCount the number of elements in segments that are equal to the given value. /O(1). Take the number of elements in an array. An array with no elements. UO(n). Produce a new array by replicating a single element the given number of times. 8Produce an array by copying a portion of another array. %number of times to repeat the source 7length of source (can be less than the provided array) array elements to repeat 1O(1). Retrieve a numbered element from an array. 4O(n). Extract a subrange of elements from an array.  Example: extract [:23, 42, 93, 50, 27:] 1 3 = [:42, 93, 50:]  source array starting index in source array length of result array 6O(n). Drop some elements from the front of an array, ' returning the latter portion. .O(n). Forwards permutation of array elements.  source array /indices in the destination to copy elements to /O(n). Backwards permutation of array elements. Example bpermute [:50, 60, 20, 30:] 3 [:0, 3, 2:] = [:50, 30, 20:]  source array -indices in the source to copy elements from. !Combination of map and bpermute. BThe advantage of using this combined version is that we dont need G to apply the parameter function to source elements that dont appear  in the result. Default backwards permutation. J The values of the index-value pairs are written into the position in the @ result array that is indicated by the corresponding index. H All positions not covered by the index-value pairs will have the value E determined by the initialiser function for that index position. XO(n). Copy the source array in the destination, using new values for the given indices. O(n). Append two arrays. 'Interleave the elements of two arrays.  Example: interleave [1,2,3] [4,5,6] = [1,4,2,5,3,6] @Extract elements of an array where the associated flag is true. QCombine two arrays, using a tag array to tell us where to get each element from.  Example: combine [T,F,F,T,T,F] [1,2,3] [4,5,6] = [1,4,5,2,3,6] Like :, but use a precomputed selector to speed up the process. See dph-prim-seq:6Data.Array.Parallel.Unlifted.Sequential.Segmented.USel ( for a description of how this works. KApply a worker function to each element of an array, yielding a new array. CExtract the elements from an array that match the given predicate. DO(1). Takes two arrays and returns an array of corresponding pairs. S If one array is short, excess elements of the longer array are discarded. @O(1). Transform an array into an array of the first components, 0 and an array of the second components. 4O(1). Take the first elements of an array of pairs. 5O(1). Take the second elements of an array of pairs. HzipWith generalises zip by zipping with the function given as the first 2 argument, instead of a tupling function. Left fold over an array. JLeft fold over an array, using the first element to initialise the state. <Compute the conjunction of all elements in a boolean array. (Compute the sum of an array of numbers.  Similar to foldl; but return an array of the intermediate states, including ' the final state that is computed by foldl. -Tag each element of an array with its index.  Example: indexed [:42, 93, 13:] = [:(0, 42), (1, 93), (2, 13):] Generate a range of Ints. ?O(1). Construct a selector. Selectors are used to speed up the  operation. See dph-prim-seq:6Data.Array.Parallel.Unlifted.Sequential.Segmented.USel ( for a description of how this works.  tags array indices array 1number of elements taken from first source array 2number of elements taken from second source array (O(1). Get the tags array of a selector. +O(1). Get the indices array of a selector. JO(1). Get the number of elements that will be taken from the first array. KO(1). Get the number of elements that will be taken from the second array. $segment descriptor of result aarray "segment descriptor of first array data of first array #segment descriptor of second array data of first array Write an array to a file. Read an array from a file. (Convert an array to a list of elements. (Convert a list of elements to an array. OOO                   ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 :; :< := >? >@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~&920HK4NOPQ+GRS(%bc`a'WX])/.dfBCksdph-prim-seq-0.5.1.1.Data.Array.Parallel.Unlifted.Sequential.Vector,Data.Array.Parallel.Unlifted.Sequential.USel7Data.Array.Parallel.Unlifted.Sequential.Segmented.USegd1Data.Array.Parallel.Unlifted.Sequential.SegmentedData.Array.Parallel.Unlifted8Data.Array.Parallel.Unlifted.Sequential.Segmented.Basics=Data.Array.Parallel.Unlifted.Sequential.Segmented.Combinators6Data.Array.Parallel.Unlifted.Sequential.Segmented.Sums6Data.Array.Parallel.Unlifted.Sequential.Segmented.Text vector-0.7.1Data.Vector.Unboxed.MutablewritereadData.Vector.Unboxedcopy unsafeFreezefromListtoList minIndexByminIndex maxIndexBymaxIndex minimumByminimum maximumBymaximumproductsumorandanyall findIndexfindnotElemelemfilterzipWith3zipWithmapindexedreverseupdate++consenumFromThenTo enumFromTo replicate singletonemptysplitAtdroptaketail!nulllengthData.Vector.Unboxed.BaseMVectorVectorUnboxData.Vector.GenericunstreamstreamUIOhPuthGetnewnewMunits interleaverepeatrepeatSsliceextractmupdatempermutepermutebpermute mbpermute bpermuteDftpackcombine combine2ByTagfoldlfoldl1foldfold1 foldl1Maybe fold1Maybescanlscanl1scanscan1scanResfstssndszipunzipenumFromStepLenenumFromToEachenumFromStepLenEachrandomrandomRmdropmsliceUSel2mkUSel2 lengthUSel2 tagsUSel2 indicesUSel2elementsUSel2_0elementsUSel2_1tagsToIndices2USegdmkUSegd emptyUSegdsingletonUSegdlengthsToUSegd lengthUSegd lengthsUSegd indicesUSegd elementsUSegd sliceUSegd extractUSegd replicateSU replicateRSUappendSU indicesSU' indicesSUfoldlSUfoldSUfold1SU combineSUfoldlRUandSUorSUsumSU productSU maximumSU minimumSUsumRUIOEltSel2SegdArrayEltgeneratezipWith4sum_s lengthsToSegdplusSegd tagsToSel2 packByTagpickcountcount_s!:+:+combine2mkSel2tagsSel2 indicesSel2elementsSel2_0elementsSel2_1repSel2 mkSelRep2indicesSelRep2elementsSelRep2_0elementsSelRep2_1 replicate_s replicate_rsappend_sfold_sfold1_sfold_rsum_r indices_s lengthSegd lengthsSegd indicesSegd elementsSegdmkSegdrandomsrandomRs bpermuteS mbpermuteSrandomSrandomRS hGetStorable hPutStorableprimPutprimGet usel2_tags usel2_indicesusel2_elements0usel2_elements1 mapAccumS usegd_lengths usegd_indicesusegd_elementsfoldl1SUSelRep2generate_cheap dph_mod_indexdph_plusdph_mult tagZeroes