7wێ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  non-portable experimentalrl@cse.unsw.edu.au5Class of types which can be stored in unboxed arrays Yield the size in bytes of a  which can store n elements &Dummy type parameter, never evaluated Number of elements  Indexing (Yield the element at the given position .Store the given element at the given position portable experimentalrl@cse.unsw.edu.au  Size hint  Unknown size Upper bound on the size  Exact size Minimum of two size hints Maximum of two size hints &Convert a size hint to an upper bound *Compute the minimum size from a size hint 6Compute the maximum size from a size hint if possible     non-portable experimentalrl@cse.unsw.edu.au5 The type of fusible streams  hint of a    Attach a  hint to a   Unfold  Convert a   to a list  Create a   from a list  Length of a    Check if a   is empty Empty    Singleton   $Replicate a value to a given length Prepend an element Append an element Concatenate two  s First element of the   or error if empty !Last element of the   or error if empty "Element at the given position #HExtract a substream of the given length starting at the given position. starting index length $All but the last element %All but the first element & The first n elements 'All but the first n elements (Map a function over a   )Zip two  s with the given function *1Drop elements which do not satisfy the predicate +6Longest prefix of elements that satisfy the predicate ,?Drop the longest prefix of elements that satisfy the predicate -Check whether the   contains an element . Inverse of - /Yield - the first element matching the predicate or  if no  such element exists. 0Yield : the index of the first element matching the predicate or   if no such element exists. 1 Left fold 2Left fold on non-empty  s 3"Left fold with strict accumulator 4Left fold on non-empty  s with strict accumulator 5 Right fold 6Right fold on non-empty  s 75Apply a monadic action to each element of the stream 8 Monadic fold ,  !"#$%&'()*+,-./012345678,  !"#$%&'()*+,-./012345678,  !"#$%&'()*+,-./012345678 non-portable experimentalrl@cse.unsw.edu.au9#Class of mutable vectors. The type m# is the monad in which the mutable  vector can be transformed and a is the type of elements. :DCreate a mutable vector of the given length. Length is not checked! ;@Create a mutable vector of the given length and fill it with an ' initial value. Length is not checked! <?Yield the element at the given position. Index is not checked! =AReplace the element at the given position. Index is not checked! >)Clear all references to external objects ?"Write the value at each position. @ECopy a vector. The two vectors may not overlap. This is not checked! target source AAGrow a vector by the given number of elements. The length is not  checked! B(Basic pure functions on mutable vectors CLength of the mutable vector DHYield a part of the mutable vector without copying it. No range checks! starting index length of the slice E/Test whether the index is valid for the vector FHYield a part of the mutable vector without copying it. Safer version of  D. G>Create a mutable vector of the given length. Safer version of  :. H@Create a mutable vector of the given length and fill it with an ! initial value. Safer version of ;. I:Yield the element at the given position. Safer version of <. J<Replace the element at the given position. Safer version of  =. KACopy a vector. The two vectors may not overlap. Safer version of  @. L@Grow a vector by the given number of elements. Safer version of  A. M?Create a new mutable vector and fill it with elements from the  . - The vector will grow logarithmically if the  hint of the   is  inexact. NOP9:;<=>?@ABCDEFGHIJKLMNOPBCDE9:;<=>?@AFGHIJKLMNOP9:;<=>?@A:;<=>?@ABCDECDEFGHIJKLMNOP non-portable experimentalrl@cse.unsw.edu.auQ*Mutable unboxed vectors. They live in the  monad. RQRQRQRR non-portable experimentalrl@cse.unsw.edu.auS(Mutable boxed vectors. They live in the  monad. TSTSTSTTUVWXYZ[UVWXYZ[UVWXYZ[UVVWXYZ[ non-portable experimentalrl@cse.unsw.edu.au.\Class of immutable vectors. ]BConstruct a pure vector from a monadic initialiser (not fusible!) ^$Length of the vector (not fusible!) _@Yield a part of the vector without copying it. No range checks! `DApply the given function to the element at the given position. This ; interface prevents us from being too lazy. Suppose we had  ! unsafeIndex' :: v a -> Int -> a /instead. Now, if we wanted to copy a vector, we'd do something like  = copy mv v ... = ... unsafeWrite mv i (unsafeIndex' v i) ... JFor lazy vectors, the indexing would not be evaluated which means that we K would retain a reference to the original vector in each element we write.  This would be bad! With ` , we can do  < copy mv v ... = ... unsafeIndex v i (unsafeWrite mv i) ... "which does not have this problem. a4Construct a pure vector from a monadic initialiser bConvert a vector to a   cCreate a vector from a   de Empty vector f Vector with exaclty one element gAVector of the given length with the given value in each position hPrepend an element iAppend an element jConcatenate two vectors k Indexing lFirst element m Last element n@Yield a part of the vector without copying it. Safer version of  _. starting index length oCopy n: elements starting at the given position to a new vector. starting index length pYield the first n elements without copying. qCopy the first n elements to a new vector. rYield all but the first n elements without copying. sCopy all but the first n elements to a new vectors. tuMap a function over a vector v)Zip two vectors with the given function. wxy1Drop elements which do not satisfy the predicate zFYield the longest prefix of elements satisfying the predicate without  copying. {FCopy the longest prefix of elements satisfying the predicate to a new  vector |GDrop the longest prefix of elements that satisfy the predicate without  copying }HDrop the longest prefix of elements that satisfy the predicate and copy  the rest to a new vector. ~-Check whether the vector contains an element  Inverse of ~ Yield - the first element matching the predicate or  if no  such element exists. Yield : the index of the first element matching the predicate or   if no such element exists.  Left fold  Lefgt fold on non-empty vectors "Left fold with strict accumulator 7Left fold on non-empty vectors with strict accumulator  Right fold  Right fold on non-empty vectors Convert a vector to a list Convert a list to a vector .\]^_`abcdefghijklmnopqrstuvwxyz{|}~.\]^_`defhigjklmnopqrstuvwxyz{|}~bca.\]^_`]^_`abcdefghijklmnopqrstuvwxyz{|}~  non-portable experimentalrl@cse.unsw.edu.au0\]^_`abcdefghijklmnopqrstuvwxyz{|}~  non-portable experimentalrl@cse.unsw.edu.au0\]^_`abcdefghijklmnopqrstuvwxyz{|}~    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL"MNOPQRSTUVWX2YYYYZZ[VWX2\]^M_P`V"$%&'()a*+O-b0c1d23ef4g5h6789:;<=>?@ ! Y Y Y Yijklmnopqrstuvtuwefxyz{t|}~DE vector-0.1Data.Vector.Unboxed.UnboxData.Vector.Stream.SizeData.Vector.StreamData.Vector.MVectorData.Vector.Unboxed.MutableData.Vector.MutableData.Vector.MVector.MutData.Vector.IVector Data.VectorData.Vector.UnboxedUnboxsize#at#read#write#SizeUnknownMaxExactsmallerlargertoMax upperBoundStreamStepDoneSkipYieldsizesizedunfoldtoListfromListlengthnullempty singleton replicateconssnoc++headlast!!extractinittailtakedropmapzipWithfilter takeWhile dropWhileelemnotElemfind findIndexfoldlfoldl1foldl'foldl1'foldrfoldr1mapM_foldMMVector unsafeNew unsafeNewWith unsafeRead unsafeWriteclearset unsafeCopy unsafeGrow MVectorPure unsafeSliceoverlapsslicenewnewWithreadwritecopygrowunstreamupdatereverseVectorMutrunIVectorvnewvlength unsafeIndexstream! takeSlice dropSlice//eqcmptakeWhileSlicedropWhileSliceghc-primGHC.Prim ByteArray# lowerBound DropWhileDropWhile_NextDropWhile_YieldDropWhile_DropDrop Drop_Keep Drop_Dropbase Data.MaybeJustNothing gROWTH_FACTORinBounds unstreamMaxunstreamUnknownGHC.STST uninitialisedtrans