+& {      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ None%&*+,-09:;<=CDOQRT\Same as - but its length is expressed as Peano number.aVector represented as continuation. Alternative wording: it's Church encoded N-element vector.;Vector parametrized by length. In ideal world it should be: Aforall n. (Arity n, Vector (v n) a, Dim (v n) ~ n) => VectorN v a7Alas polymorphic constraints aren't allowed in haskell.Type class for vectors with fixed length. Instance should provide two functions: one to create vector and another for vector deconstruction. They must obey following law: inspect v construct = v8For example instance for 2D vectors could be written as: data V2 a = V2 a a type instance V2 = 2 instance Vector V2 a where construct = Fun V2 inspect (V2 a b) (Fun f) = f a b'N-ary function for creation of vectors. Deconstruction of vector. WOptional more efficient implementation of indexing. Shouldn't be used directly, use   instead. /Size of vector expressed as type-level natural. Type class for handling n-ary functions. Left fold over na elements exposed as n-ary function. These elements are supplied as arguments to the function.%Apply all parameters to the function.Apply all parameters to the function using monadic actions. Note that for identity monad it's same as applyFun. Ignoring newtypes: &forall b. Fn n a b -> b ~ ContVec n ahReverse order of parameters. It's implemented directly in type class since expressing it in terms of accum> will require putting ArityPeano constraint on step funcionWorker function for j]Type class for type level number for which we can defined operations over N-ary functions.&Newtype wrapper which is used to make ( injective. It's also a reader monad.!Type family for n-ary functions. n$ is number of parameters of type a and b is result type.-Type family for sum of unary natural numbers.2Convert type level natural to Peano representationPeano numbers. Since type level naturals don't support induction we have to convert type nats to Peano representation first and work with it,%Apply all parameters to the function.?Apply all parameters to the function using applicative actions.Arity of function.%Prepend ignored parameter to function 'Curry first parameter of n-ary function!)Uncurry first parameter of n-ary function"&Curry last parameter of n-ary function#Curry n# first parameters of n-ary function$)Apply last parameter to function. Unlike apFun6 we need to traverse all parameters but last hence  constraint.%Recursive step for the function&8Move function parameter to the result of N-ary function.'9Length of vector. Function doesn't evaluate its argument.(Cons values to the  CVecPeano.*1Convert regular vector to continuation based one.+Create empty vector.,hConvert list to continuation-based vector. Will throw error if list is shorter than resulting vector.-Same as ,? bu throws error is list doesn't have same length as vector..=Convert list to continuation-based vector. Will fail with # if list doesn't have right length./Convert vector to the list0@Execute monadic action for every element of vector. Synonym for .13Execute monadic action for every element of vector.2FGenerate vector from function which maps element's index to its value.3QGenerate vector from monadic function which maps element's index to its value.4Unfold vector.5Unit vector along Nth axis.;Map over vector. Synonym for <<Apply function to every element of the vector and its index.=Effectful map over vector.>DApply monadic function to every element of the vector and its index.?AApply monadic action to each element of vector and ignore result.@RApply monadic action to each element of vector and its index and ignore result.ALeft scan over vectorBLeft scan over vectorC7Evaluate every action in the vector from left to right.DIEvaluate every action in the vector from left to right and ignore result.EThe dual of sequenceAGO(1) Tail of vector.HO(1) Prepend element to vectorI0Prepend single element vector to another vector.JO(1) Append element to vectorKConcatenate vectorL'Reverse order of elements in the vectorM'Zip two vector together using function.NZip three vectors togetherOLZip two vector together using function which takes element index as well.PZip three vectors togetherQ/Zip two vector together using monadic function.SUZip two vector together using monadic function which takes element index as well..U&Run continuation vector. It's same as   but with arguments flipped.V#Convert continuation to the vector.W2Finalizer function for getting head of the vector.XO(n) Get value at specified index.Y5Twan van Laarhoven lens for continuation based vector5Helper for implementation of Twan van Laarhoven lens.Z#Left fold over continuation vector.[#Left fold over continuation vector.\+Monadic left fold over continuation vector.]+Monadic left fold over continuation vector.^ Left fold._#Right fold over continuation vector`#Right fold over continuation vectoraSum all elements in the vector.bMinimal element of vector.cMaximal element of vector.d$Conjunction of elements of a vector.e(Disjunction of all elements of a vector.f<Determines whether all elements of vector satisfy predicate.g>Determines whether any of element of vector satisfy predicate.hThe hy function takes a predicate and a vector and returns the leftmost element of the vector matching the predicate, or  if there is no such element.iGeneric  " which could work with any vector.jGeneric  x which could work with any vector. Since vector can only have one constructor argument for constructor is ignored.qoNote this instance (and other instances for tuples) is essentially monomorphic in element type. Vector type v of 2 element tuple  (Int,Int) is (,) Int/ so it will only work with elements of type Int.  Get value to apply to function Initial valueN-ary functionGet value to apply to function Initial value !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~i  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghiji  !"#$&%  '()U*,-./012345+HIJK6789:;<=>?@ABCDEFGLMNOPQRSTWXYVZ^_[`\]abcdefghij    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~NoneDRMap over vector<Apply function to every element of the vector and its index.Monadic map over vector.Monadic map over vector.'Zip two vector together using function./Zip two vector together using monadic function.LZip two vector together using function which takes element index as well.UZip two vector together using monadic function which takes element index as well.. None+,9:;<=DOQRTCN-ary constructor. Despite scary signature it's just N-ary function with additional type parameter which is used to fix type of vector being constructed. It could be used as: %v = mkN (Proxy @ (Int,Int,Int)) 1 2 3Or if type of r is fixed elsewhere v = mkN [v] 1 2 3Replicate value n times. Examples:%import Data.Vector.Fixed.Boxed (Vec2)replicate 1 :: Vec2 IntfromList [1,1]%replicate 2 :: (Double,Double,Double) (2.0,2.0,2.0)%import Data.Vector.Fixed.Boxed (Vec4)replicate "foo" :: Vec4 String"fromList ["foo","foo","foo","foo"]3Execute monadic action for every element of vector. Examples:*import Data.Vector.Fixed.Boxed (Vec2,Vec3)'replicateM (Just 3) :: Maybe (Vec3 Int)Just fromList [3,3,3]+replicateM (putStrLn "Hi!") :: IO (Vec2 ())Hi!Hi!fromList [(),()]]Unit vector along Nth axis. If index is larger than vector dimensions returns zero vector. Examples:%import Data.Vector.Fixed.Boxed (Vec3)basis 0 :: Vec3 IntfromList [1,0,0]basis 1 :: Vec3 IntfromList [0,1,0]basis 3 :: Vec3 IntfromList [0,0,0]Unfold vector.IGenerate vector from function which maps element's index to its value. Examples:'import Data.Vector.Fixed.Unboxed (Vec4)generate (^2) :: Vec4 IntfromList [0,1,4,9]QGenerate vector from monadic function which maps element's index to its value.First element of vector. Examples:%import Data.Vector.Fixed.Boxed (Vec3)let x = mk3 1 2 3 :: Vec3 Inthead x1Tail of vector. Examples:import Data.Complextail (1,2,3) :: Complex Double 2.0 :+ 3.0Cons element to the vectorAppend element to the vector'Reverse order of elements in the vectorARetrieve vector's element at index. Generic implementation is O(n). but more efficient one is used when possible.1Get element from vector at statically known indexSet n'th element in the vector/Twan van Laarhoven's lens for element of vectorOTwan van Laarhoven's lens for element of vector with statically known index.Left fold over vectorRight fold over vectorLeft fold over vectorBCombine the elements of a structure using a monoid. Similar to VMap each element of the structure to a monoid, and combine the results. Similar to Right fold over vectorLLeft fold over vector. Function is applied to each element and its index.Monadic fold over vector.TLeft monadic fold over vector. Function is applied to each element and its index.Sum all elements in the vector.Maximal element of vector. Examples:%import Data.Vector.Fixed.Boxed (Vec3)let x = mk3 1 2 3 :: Vec3 Int maximum x3Minimal element of vector. Examples:%import Data.Vector.Fixed.Boxed (Vec3)let x = mk3 1 2 3 :: Vec3 Int minimum x1(Conjunction of all elements of a vector.(Disjunction of all elements of a vector.<Determines whether all elements of vector satisfy predicate.>Determines whether any of element of vector satisfy predicate.The y function takes a predicate and a vector and returns the leftmost element of the vector matching the predicate, or  if there is no such element.Test two vectors for equality. Examples:%import Data.Vector.Fixed.Boxed (Vec2)let v0 = basis 0 :: Vec2 Intlet v1 = basis 1 :: Vec2 Int v0 `eq` v0True v0 `eq` v1False&Lexicographic ordering of two vectors.Map over vector7Evaluate every action in the vector from left to right.HEvaluate every action in the vector from left to right and ignore resultEffectful map over vector.AApply monadic action to each element of vector and ignore result.<Apply function to every element of the vector and its index.DApply monadic function to every element of the vector and its index.ZApply monadic function to every element of the vector and its index and discard result.Left scan over vectorLeft scan over vector Analog of  from . Analog of  from .'Zip two vector together using function. Examples:%import Data.Vector.Fixed.Boxed (Vec3)let b0 = basis 0 :: Vec3 Intlet b1 = basis 1 :: Vec3 Intlet b2 = basis 2 :: Vec3 Intlet vplus x y = zipWith (+) x y vplus b0 b1fromList [1,1,0] vplus b0 b2fromList [1,0,1] vplus b1 b2fromList [0,1,1]Zip three vector together/Zip two vector together using monadic function.GZip two vector elementwise using monadic function and discard resultLZip two vector together using function which takes element index as well.Zip three vector togetherUZip two vector together using monadic function which takes element index as well..GZip two vector elementwise using monadic function and discard resultDefault implementation of  for ! type class for fixed vectors.Default implementation of  for  type class for fixed vectorsDefault implementation of  for  type class for fixed vectorDefault implementation of  for  type class for fixed vectorDefault implementation of  from  type class&Convert between different vector typesConvert vector to the listVCreate vector form list. Will throw error if list is shorter than resulting vector.`Create vector form list. Will throw error if list has different length from resulting vector.%Create vector form list. Will return Nothing7 if list has different length from resulting vector.Create vector from  data type. Will return NothingD if data type different number of elements that resulting vector.MMMNone +,:<=DORT Type class for immutable vectorsUConvert vector to immutable state. Mutable vector must not be modified afterwards.UConvert immutable vector to mutable. Immutable vector must not be used afterwards.4Get element at specified index without bounds check.Type class for mutable vectors.Copy vector. The two vectors may not overlap. Since vectors' length is encoded in the type there is no need in runtime checks.}Copy vector. The two vectors may overlap. Since vectors' length is encoded in the type there is no need in runtime checks.Allocate new vector)Read value at index without bound checks.*Write value at index without bound checks.Dimension for mutable vector.+Mutable counterpart of fixed-length vector.ALength of mutable vector. Function doesn't evaluate its argument.Create copy of vector.&Read value at index with bound checks.'Write value at index with bound checks.+Safely convert mutable vector to immutable.+Safely convert immutable vector to mutable.7Generic inspect implementation for array-based vectors.9Generic construct implementation for array-based vectors.None%&+,/09:;<=DQRT Empty tuple.Single-element tuple.YStandard GADT-based vector with statically known length parametrized by Peano numbers.UType-based vector with statically known length parametrized by GHC's type naturals)    h '*+Vh  '+V*"    None,/09:;<=DRT(Mutable unboxed vector with fixed length2Vector with fixed length which can hold any value. !"#$%&'()* !"#$%&'()*None,/09:;<=DRT0(Mutable unboxed vector with fixed length1 Unboxed vector with fixed length+,-./0123456789:;<+,-./011/.-,+0+,-./0123456789:;<None,/09:;<=DRTB/Storable-based mutable vector with fixed lengthD'Storable-based vector with fixed lengthEAGet underlying pointer. Data may not be modified through pointer.F&Construct vector from foreign pointer.=>?@ABCDEFGHIJKLMNOPQR =>?@ABCDEFG DA@?>=FEGBC=>?@ABCDEFGHIJKLMNOPQRNone+,/09:;<=DRTSTUVWXYZ      !"#$%&'()*+,-./0123456789:[\];<^_`=>abc?@defABghiCDjklEFmnoGHpqrIJstuKLvwxMNyz{OP|}~QRSTUVWXYZ[\]^_`abcdefghijklmnSTUVWXYZZXWVUTYSSTUVWXYZ789:[\];<^_`=>abc?@defA B ghiC D jklE FmnoGHpqrIJstuKLvwxMNyz{OP|}~QRSTUVWX Y!Z"[#\$]%^&_'`(a)b*c+d,e-f.g/h0i1j2k3l4m5n6o !"##$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw xyz{|}~ E F G H I ? @ D C A B f V W Y Z [ g h i n m o j k l p r q s t u v w J R S L N K M O P Q T U \ ] ` a ^ _ b c > ; < = g      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMLNLOPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^__``abcdefghijjkklkmnopqrsqrtju vwwQQxyyzz{|}{|{|~{|+fixed-vector-1.0.0.0-6UgqzLzWCEQ2TRlZVF32THData.Vector.Fixed.StorableData.Vector.Fixed.PrimitiveData.Vector.Fixed.ContData.Vector.Fixed.GenericData.Vector.FixedData.Vector.Fixed.MutableData.Vector.Fixed.BoxedData.Vector.Fixed.Unboxed! Data.DatagfoldlgunfoldlData.Vector.Fixed.InternalbaseForeign.StorableStorable(primitive-0.6.2.0-4578caNkWQ54Gt1mxLF2YhData.Primitive.TypesPrim CVecPeanoContVecVectorNVector constructinspect basicIndexDim ArityPeanoaccumapplyFun applyFunMreverseFgunfoldFArityFununFunFnAddPeanoPeanoNumZSapplyapplyMarityconstFun curryFirst uncurryFirst curryLast curryManyapLastwithFun shuffleFunlength consPeano toContVeccvecemptyfromList fromList' fromListMtoList replicate replicateMgenerate generateMunfoldrbasismk1mk2mk3mk4mk5mapimapmapMimapMmapM_imapM_scanlscanl1sequence sequence_ distributecollecttailconsconsVsnocconcatreversezipWithzipWith3izipWith izipWith3zipWithM zipWithM_ izipWithM izipWithM_ runContVecvectorheadindexelementfoldlifoldlfoldMifoldMfoldl1foldrifoldrsumminimummaximumandorallanyfindgunfold$fVectorProxya$fVector(,,,,,,)a$fVector(,,,,,)a$fVector(,,,,)a$fVector(,,,)a $fVector(,,)a $fVector(,)a$fVectorIdentitya$fVectorComplexa$fTraversableContVec$fFoldableContVec$fApplicativeContVec$fFunctorContVec$fVectorNContVecna$fVectorContVeca $fArityPeanoS $fArityPeanoZ $fMonadFun$fApplicativeFun $fFunctorFunmapGimapGmapMGimapMGzipWithG zipWithMG izipWithG izipWithMGmk0mkNset elementTyfoldfoldMapeqord sequenceAtraversedefaultAlignemnt defaultSizeOf defaultPeek defaultPoke defaultRnfconvert fromFoldableIVector unsafeFreeze unsafeThaw unsafeIndexMVectorcopymovenew unsafeRead unsafeWriteDimMMutablelengthMclonereadwritefreezethaw inspectVec constructVecTuple5Tuple4Tuple3Tuple2EmptyOnlyVecPeanoNilConsVecList$fVectorEmptya $fNFDataEmpty$fTraversableEmpty$fFoldableEmpty$fFunctorEmpty$fStorableOnly $fVectorOnlya $fNFDataOnly $fMonoidOnly$fTraversableOnly$fFoldableOnly $fFunctorOnly$fStorableVecList$fMonoidVecList$fTraversableVecList$fFoldableVecList$fApplicativeVecList$fFunctorVecList $fOrdVecList $fEqVecList $fShowVecList$fVectorNVecListna$fVectorVecLista$fNFDataVecList $fShowOnly$fEqOnly $fOrdOnly $fDataOnly $fShowEmpty $fEqEmpty $fOrdEmpty $fDataEmptyVec5Vec4Vec3Vec2Vec1MVecVec$fTraversableVec $fFoldableVec$fApplicativeVec $fFunctorVec $fMonoidVec$fOrdVec$fEqVec$fVectorNVecna $fVectorVeca $fIVectorVeca$fMVectorMVeca $fNFDataVec $fShowVec $fStorableVec $fDataVecunsafeToForeignPtrunsafeFromForeignPtr unsafeWithUnbox$fIVectorVecAll$fMVectorMVecAll $fUnboxnAll$fIVectorVecAny$fMVectorMVecAny $fUnboxnAny$fIVectorVecProduct$fMVectorMVecProduct$fUnboxnProduct$fIVectorVecSum$fMVectorMVecSum $fUnboxnSum$fIVectorVecDual$fMVectorMVecDual $fUnboxnDual$fIVectorVecDown$fMVectorMVecDown $fUnboxnDown$fIVectorVecIdentity$fMVectorMVecIdentity$fUnboxnIdentity$fIVectorVecConst$fMVectorMVecConst $fUnboxnConst$fIVectorVec(,,)$fMVectorMVec(,,) $fUnboxn(,,)$fIVectorVec(,)$fMVectorMVec(,) $fUnboxn(,)$fIVectorVecComplex$fMVectorMVecComplex$fUnboxnComplex$fIVectorVecDouble$fMVectorMVecDouble$fUnboxnDouble$fIVectorVecFloat$fMVectorMVecFloat $fUnboxnFloat$fIVectorVecChar$fMVectorMVecChar $fUnboxnChar$fIVectorVecWord64$fMVectorMVecWord64$fUnboxnWord64$fIVectorVecWord32$fMVectorMVecWord32$fUnboxnWord32$fIVectorVecWord16$fMVectorMVecWord16$fUnboxnWord16$fIVectorVecWord8$fMVectorMVecWord8 $fUnboxnWord8$fIVectorVecWord$fMVectorMVecWord $fUnboxnWord$fIVectorVecInt64$fMVectorMVecInt64 $fUnboxnInt64$fIVectorVecInt32$fMVectorMVecInt32 $fUnboxnInt32$fIVectorVecInt16$fMVectorMVecInt16 $fUnboxnInt16$fIVectorVecInt8$fMVectorMVecInt8 $fUnboxnInt8$fIVectorVecInt$fMVectorMVecInt $fUnboxnInt$fIVectorVecBool$fMVectorMVecBool $fUnboxnBool$fIVectorVec()$fMVectorMVec() $fUnboxn()GHC.BaseNothingpurefmapelementFConstT_gfoldlT_ifoldrT_ifoldlT_lensT_izipT_scanl1T_scanlT_mapT_mapM T_sequenceAT_mkN T_shuffleT_Flip T_gunfoldT_ap apGunfold sequenceAFimapMFimapFscanlFscanl1F izipWithFmakeListgfoldlF Data.FoldableData.Traversable Traversable alignmentsizeOfpeekpokedeepseq-1.4.2.0Control.DeepSeqrnfNFDataFoldablerunIndexT_newstepT_ListFlipty_Veccon_Vec uninitialised mallocVectorgetPtrV_AllMV_AllV_AnyMV_Any V_Product MV_ProductV_SumMV_SumV_DualMV_DualV_DownMV_Down V_Identity MV_IdentityV_ConstMV_ConstV_3MV_3V_2MV_2 V_Complex MV_ComplexV_Double MV_DoubleV_FloatMV_FloatV_CharMV_CharV_Word64 MV_Word64V_Word32 MV_Word32V_Word16 MV_Word16V_Word8MV_Word8V_WordMV_WordV_Int64MV_Int64V_Int32MV_Int32V_Int16MV_Int16V_Int8MV_Int8V_IntMV_IntV_BoolMV_BoolV_UnitMV_UnitfromBooltoBool D:R:VecnAll0D:R:MVecnsAll0 D:R:VecnAny0D:R:MVecnsAny0D:R:VecnProduct0D:R:MVecnsProduct0 D:R:VecnSum0D:R:MVecnsSum0 D:R:VecnDual0D:R:MVecnsDual0 D:R:VecnDown0D:R:MVecnsDown0D:R:VecnIdentity0D:R:MVecnsIdentity0D:R:VecnConst0D:R:MVecnsConst0 D:R:Vecn(,,)0D:R:MVecns(,,)0 D:R:Vecn(,)0D:R:MVecns(,)0D:R:VecnComplex0D:R:MVecnsComplex0D:R:VecnDouble0D:R:MVecnsDouble0D:R:VecnFloat0D:R:MVecnsFloat0 D:R:VecnChar0D:R:MVecnsChar0D:R:VecnWord640D:R:MVecnsWord640D:R:VecnWord320D:R:MVecnsWord320D:R:VecnWord160D:R:MVecnsWord160D:R:VecnWord80D:R:MVecnsWord80 D:R:VecnWord0D:R:MVecnsWord0D:R:VecnInt640D:R:MVecnsInt640D:R:VecnInt320D:R:MVecnsInt320D:R:VecnInt160D:R:MVecnsInt160 D:R:VecnInt80D:R:MVecnsInt80 D:R:VecnInt0D:R:MVecnsInt0 D:R:VecnBool0D:R:MVecnsBool0 D:R:Vecn()0 D:R:MVecns()0