úÎ=Â:ï+      !"#$%&'()* non-portable experimentalalfonso.acosta@gmail.com7EFixed-Sized Vector data type, indexed with type-level naturals, the $ first index for all vectors is 0 +,Cons operator, note it's not a constructor A FSVec with a single element 'Build a vector from a list (CPS style) 4Build a vector from a list (using Template Haskell) Vector quasiquoter -.6Build a vector from a list (unsafe version: The static/dynamic size of , the list is checked to match at runtime) Build a vector from a list. -Unlike unsafeVector, reallyunsafeVector doesn't have access to the C static size of the list and thus cannot not check it against its F dynamic size (which saves traversing the list at runtime to obtain  the dynamic length). BTherefore, reallyUnsafeVector (the name is that long on purspose) E can be used to gain some performance but may break the consistency @ of the size parameter if not handled with care (i.e. the size F parameter can nolonger be checked statically and the fullfilment of > function constraints is left to the programmers judgement). 6Do not use reallyUnsafeVector unless you know what you' re doing! %Read a vector (Note the the size of H the vector string is checked to match the resulting type at runtime) Read a vector, CPS version.  value-level length of a vector (generic value-level length of a vector type-level version of length Transform Vector to a list Check if a Vector is empty Access an element of a vector Replace an element of a vector #Take the first element of a vector "Take the last element of a vector -Return all but the first element of a vector ,Return all but the last element of a vector &Take the first i elements of a vector &Drop the first i elements of a vector  The function 4 selects elements in the vector. The first argument N gives the initial element, starting from zero, the second argument gives the F stepsize between elements and the last argument gives the number of  elements. *break a vector into subvectors of size n. 3add an element at the end of a vector. (Inverse of '(+>)' ) Concatenate two vectors -Apply a function on all elements of a vector )Applies function pairwise on two vectors DFolds a function from the right to the left over a vector using an  initial value. DFolds a function from the left to the right over a vector using an  initial value. )zip two vectors into a vector of tuples. !+unzip a vector of tuples into two vectors. ",shift a value from the left into a vector. #,shift a value from the left into a vector. $JRotate a vector to the left. Note that this fuctions does not change the  size of a vector. %JRotate a vector to the left. Note that this fuctions does not change the  size of a vector. &/flatten a vector of vectors to a single vector 'reverse a vector (Dgenerate a vector with a given number of elements starting from an L initial element using a supplied function for the generation of elements.   FSVec> iterate d5 (+1) 1 $ <1,2,3,4,5> :: Num a => FSVec D5 a )) behaves in the same way as (, but starts with the > application of the supplied function to the supplied value.   Vector> generate d5 (+1) 1 % <2,3,4,5,6> :: Num a => FSVec D5 a *Ggenerates a vector with a given number of copies of the same element.   Vector> copy d7 5 # <5,5,5,5,5,5,5> :: Vector Integer /0123456+  !"#$%&'()*+  !"#$%&'()*+  !"#$%&'()* non-portable experimentalalfonso.acosta@gmail.com+  !"#$%&'()*7      !"#$%&'()*+,-./0123456789parameterized-data-0.1.2Data.Param.FSVec Data.ParamFSVecempty+> singleton vectorCPSvectorTHv unsafeVectorreallyUnsafeVector readFSVec readFSVecCPSlength genericLengthlengthT fromVectornull!replaceheadlasttailinittakedropselectgroup<+++mapzipWithfoldlfoldrzipunzipshiftlshiftrrotlrotrconcatreverseiterategeneratecopyunFSVec parseFSVecExp parseFSVecPatliftVliftV2splitAtMunsafeFSVecCoerce undefSigEunsafeVectorCPS readFSVecListlexFSVec