h*KlI      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab c d e f g h i j 0.9.0.3 (c) 2008-2011 Dan DoelDan Doel ExperimentalPortable Safe-Inferredzvector-algorithms9A type of comparisons between two values of a given type.klmno(c) 2008-2010 Dan DoelDan Doel ExperimentalPortable Safe-Inferredvector-algorithms$Sorts the elements at the positions off8 and 'off + 1' in the given array using the comparison.vector-algorithmsSorts the elements at the two given indices using the comparison. This is essentially a compare-and-swap, although the first index is assumed to be the lower of the two.vector-algorithmsSorts the three elements starting at the given offset in the array.vector-algorithmsSorts the elements at the three given indices. The indices are assumed to be given from lowest to highest, so if 'l < m < u' then 'sort3ByIndex cmp a m l u' essentially sorts the median of three into the lowest position in the array.vector-algorithms0Sorts the four elements beginning at the offset.vector-algorithmsSorts the elements at the four given indices. Like the 2 and 3 element versions, this assumes that the indices are given in increasing order, so it can be used to sort medians into particular positions and so on.(c) 2008-2010 Dan DoelDan Doel ExperimentalPortable Safe-Inferred ?vector-algorithms?Sorts an entire array using the default comparison for the typevector-algorithms A variant on * that returns a vector of unique elements. vector-algorithms.Sorts an entire array using a given comparison vector-algorithms A variant on  + which returns a vector of unique elements. vector-algorithms0Sorts the portion of an array delimited by [l,u) vector-algorithmsSorts the portion of the array delimited by [l,u) under the assumption that [l,m) is already sorted.  (c) 2008-2011 Dan DoelDan Doel  ExperimentalPortable Safe-Inferred  vector-algorithms,Sorts an array using the default comparison.vector-algorithms A variant on  * that returns a vector of unique elements.vector-algorithms)Sorts an array using a custom comparison.vector-algorithms A variant on + which returns a vector of unique elements.  (c) 2011 Dan DoelDan Doel  Experimental4Non-portable (FlexibleContexts, ScopedTypeVariables) Safe-Inferred* vector-algorithmsThe methods of this class specify the information necessary to sort arrays using the default ordering. The name  is meant to convey that index should return results in a similar way to indexing into a string.vector-algorithmsComputes the length of a representative of a stripe. It should take n" passes to sort values of extent n?. The extent may not be uniform across all values of the type.vector-algorithms5The size of the bucket array necessary for sorting esvector-algorithmsDetermines which bucket a given element should inhabit for a particular iteration.vector-algorithmsGiven a representative of a stripe and an index number, this function determines whether to stop sorting.vector-algorithmsSorts an array using the default ordering. Both Lexicographic and Ord are necessary because the algorithm falls back to insertion sort for sufficiently small arrays.vector-algorithms A variant on * that returns a vector of unique elements.vector-algorithmsA fully parameterized version of the sorting algorithm. Again, this function takes both radix information and a comparison, because the algorithms falls back to insertion sort for small arrays.vector-algorithms A variant on + which returns a vector of unique elements.vector-algorithms,a comparison for the insertion sort flalbackvector-algorithms'determines whether a stripe is completevector-algorithmsthe number of buckets necessaryvector-algorithmsthe big-endian radix functionvector-algorithmsthe array to be sortedvector-algorithms,a comparison for the insertion sort flalbackvector-algorithms'determines whether a stripe is completevector-algorithmsthe number of buckets necessaryvector-algorithmsthe big-endian radix functionvector-algorithmsthe array to be sorted  (c) 2008-2015 Dan DoelDan Doel  ExperimentalNon-portable (type operators) Safe-Inferred"m'vector-algorithms1Sorts an entire array using the default ordering.(vector-algorithms A variant on '* that returns a vector of unique elements.)vector-algorithms.Sorts an entire array using a custom ordering.*vector-algorithms A variant on )+ which returns a vector of unique elements.+vector-algorithms9Sorts a portion of an array [l,u) using a custom ordering,vector-algorithmsMoves the lowest k elements to the front of the array. The elements will be in no particular order.-vector-algorithmsMoves the lowest (as defined by the comparison) k elements to the front of the array. The elements will be in no particular order..vector-algorithms Moves the lowest k elements in the portion [l,u) of the array into the positions [l,k+l). The elements will be in no particular order./vector-algorithms>Moves the lowest k elements to the front of the array, sorted.The remaining values of the array will be in no particular order.0vector-algorithmsMoves the lowest k elements (as defined by the comparison) to the front of the array, sorted.The remaining values of the array will be in no particular order.1vector-algorithmsMoves the lowest k elements in the portion [l,u) of the array into positions [l,k+l), sorted.The remaining values in [l,u) will be in no particular order. Values outside the range [l,u) will be unaffected.2vector-algorithmsConstructs a heap in a portion of an array [l, u), using the values therein.Note: 2 is more efficient than constructing a heap by repeated insertion. Repeated insertion has complexity O(n*log n) while 2 is able to construct a heap in O(n), where n is the number of elements in the heap.3vector-algorithmsGiven a heap stored in a portion of an array [l,u), swaps the top of the heap with the element at u and rebuilds the heap.4vector-algorithmsGiven a heap stored in a portion of an array [l,u) swaps the top of the heap with the element at position t, and rebuilds the heap.5vector-algorithmsGiven a heap stored in a portion of an array [l,u), sorts the highest values into [m,u). The elements in [l,m) are not in any particular order.6vector-algorithmsGiven a heap stored in a portion of an array [l,u) and an element e, inserts the element into the heap, resulting in a heap in [l,u].Note: it is best to only use this operation when incremental construction of a heap is required. 2 is capable of building a heap in O(n) time, while repeated insertion takes O(n*log n) time. +vector-algorithmslower index, lvector-algorithmsupper index, u,vector-algorithmsnumber of elements to select, k-vector-algorithmsnumber of elements to select, k.vector-algorithmsnumber of elements to select, kvector-algorithmslower index, lvector-algorithmsupper index, u/vector-algorithmsnumber of elements to sort, k0vector-algorithmsnumber of elements to sort, k1vector-algorithmsnumber of elements to sort, kvector-algorithmslower index, lvector-algorithmsupper index, u2vector-algorithmslower index, lvector-algorithmsupper index, u3vector-algorithmslower heap index, lvector-algorithmsupper heap index, u4vector-algorithmslower heap index, lvector-algorithmsupper heap index, uvector-algorithmsindex to pop to, t5vector-algorithmslower heap index, lvector-algorithms&lower bound of final sorted portion, mvector-algorithmsupper heap index, u6vector-algorithmslower heap index, lvector-algorithmsupper heap index, uvector-algorithmselement to be inserted, e'()*+,-./0123456'()*+,-./0123456(c) 2008-2015 Dan DoelDan Doel  Experimental,Non-portable (type operators, bang patterns) Safe-Inferred) 7vector-algorithms1Sorts an entire array using the default ordering.8vector-algorithms A variant on 7* that returns a vector of unique elements.9vector-algorithms A variant on 9+ which returns a vector of unique elements.:vector-algorithmsSorts an entire array using a custom ordering returning a vector of the unique elements.;vector-algorithms9Sorts a portion of an array [l,u) using a custom ordering<vector-algorithmsMoves the least k elements to the front of the array in no particular order.=vector-algorithmsMoves the least k elements (as defined by the comparison) to the front of the array in no particular order.>vector-algorithmsMoves the least k elements in the interval [l,u) to the positions [l,k+l) in no particular order.?vector-algorithms=Moves the least k elements to the front of the array, sorted.@vector-algorithmsMoves the least k elements (as defined by the comparison) to the front of the array, sorted.Avector-algorithmsMoves the least k elements in the interval [l,u) to the positions [l,k+l), sorted.;vector-algorithmslower index, lvector-algorithmsupper index, u<vector-algorithmsnumber of elements to select, k=vector-algorithmsnumber of elements to select, k>vector-algorithmsnumber of elements to select, kvector-algorithmslower bound, lvector-algorithmsupper bound, u?vector-algorithmsnumber of elements to sort, k@vector-algorithmsnumber of elements to sort, kAvector-algorithmsnumber of elements to sort, kvector-algorithmslower index, lvector-algorithmsupper index, u 789:;<=>?@A 789:;<=>?@A(c) 2008-2011 Dan DoelDan Doel  Experimental3Non-portable (scoped type variables, bang patterns) Safe-Inferred-Cvector-algorithms5The number of passes necessary to sort an array of esDvector-algorithmsThe size of an auxiliary arrayEvector-algorithms4The radix function parameterized by the current passFvector-algorithms+Sorts an array based on the Radix instance.Gvector-algorithmsRadix sorts an array using custom radix information requires the number of passes to fully sort the array, the size of of auxiliary arrays necessary (should be one greater than the maximum value returned by the radix function), and a radix function, which takes the pass and an element, and returns the relevant radix.Gvector-algorithmsthe number of passesvector-algorithmsthe size of auxiliary arraysvector-algorithmsthe radix functionvector-algorithmsthe array to be sortedFGBDECFGBDEC((c) 2009-2015 Dan Doel, 2015 Tim BaumannDan Doel  ExperimentalNon-portable (bang patterns) Safe-Inferred ExperimentalNon-portable (bang patterns) Safe-InferredI evector-algorithms,Sorts an array using the default comparison.fvector-algorithms A variant on e* that returns a vector of unique elements.gvector-algorithms)Sorts an array using a custom comparison.hvector-algorithms A variant on g+ which returns a vector of unique elements.pvector-algorithmsComputes the minimum run size for the sort. The goal is to choose a size such that there are almost if not exactly 2^n chunks of that size in the array.qvector-algorithmsIdentify the next run (that is a monotonically increasing or strictly decreasing sequence) in the slice [l,u) in vec. Returns the order and length of the run.rvector-algorithmsTests if a temporary buffer has a given size. If not, allocates a new buffer and returns it instead of the old temporary buffer.svector-algorithmsCopy the slice [i,i+len) from vec to tmpBuf. If tmpBuf is not large enough, a new buffer is allocated and used. Returns the buffer.tvector-algorithmsNumber of consecutive times merge chooses the element from the same run before galloping mode is activated.uvector-algorithmsMerge the adjacent sorted slices [l,m) and [m,u) in vec. This is done by copying the slice [l,m) to a temporary buffer. Returns the (enlarged) temporary buffer.vvector-algorithmsMerge the adjacent sorted slices [l,m) and [m,u) in vec. This is done by copying the slice [j,k) to a temporary buffer. Returns the (enlarged) temporary buffer.wvector-algorithmsMerge the adjacent sorted slices A=[l,m) and B=[m,u) in vec. This begins with galloping searches to find the index of vec[m] in A and the index of vec[m-1] in B to reduce the sizes of A and B. Then it uses v or u depending on whether A or B is larger. Returns the (enlarged) temporary buffer.qvector-algorithmslvector-algorithmsusvector-algorithmsivector-algorithmslenvector-algorithmsvecvector-algorithmstmpBufuvector-algorithmsvecvector-algorithmslvector-algorithmsmvector-algorithmsuvector-algorithmstmpBufvvector-algorithmsvecvector-algorithmslvector-algorithmsmvector-algorithmsuvector-algorithmstmpBufwvector-algorithmsvecvector-algorithmslvector-algorithmsmvector-algorithmsuvector-algorithmstmpBufefghefgh   !"#$%&'()*+,-./0123456,-./01789:;<=>?@ABCDEFGHIJKLMNOPQRS T U V     W X Y Z [ \ ] ^ _ ` a b c d e0vector-algorithms-0.9.0.3-CkG9WXBlrdh7XECeKIFqz4Data.Vector.Algorithms.Optimal Data.Vector.Algorithms.InsertionData.Vector.Algorithms.Merge#Data.Vector.Algorithms.AmericanFlagData.Vector.Algorithms.HeapData.Vector.Algorithms.IntroData.Vector.Algorithms.RadixData.Vector.Algorithms.SearchData.Vector.AlgorithmsData.Vector.Algorithms.Timvector-algorithmsData.Vector.Algorithms.Common Comparison sort2ByOffset sort2ByIndex sort3ByOffset sort3ByIndex sort4ByOffset sort4ByIndexsortsortUniqsortBy sortUniqBy sortByBounds sortByBounds' Lexicographicextentsizeindex terminate$fLexicographicEither$fLexicographic(,)$fLexicographicByteString$fLexicographicInt$fLexicographicInt64$fLexicographicInt32$fLexicographicInt16$fLexicographicInt8$fLexicographicWord$fLexicographicWord64$fLexicographicWord32$fLexicographicWord16$fLexicographicWord8selectselectByselectByBounds partialSort partialSortBypartialSortByBoundsheapifypoppopTosortHeap heapInsertRadixpassesradix $fRadix(,) $fRadixWord64 $fRadixWord32 $fRadixWord16 $fRadixWord8 $fRadixWord $fRadixInt64 $fRadixInt32 $fRadixInt16 $fRadixInt8 $fRadixInt binarySearchbinarySearchBybinarySearchByBounds binarySearchLbinarySearchLBybinarySearchLByBounds binarySearchRbinarySearchRBybinarySearchRByBounds binarySearchPbinarySearchPBoundsgallopingSearchLeftPgallopingSearchRightPgallopingSearchLeftPBoundsgallopingSearchRightPBoundsnubnubBynubByMut $fEqOrder $fShowOrder copyOffsetinc countLoopmidPointuniqueMutableByminrunnextRunensureCapacity cloneSlice minGallopmergeLomergeHimerge