!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None +,0<=DORT!Easily fuseable .It unpurpose don't have bad (fusion-wise) instances, like  Traversable4. Generally, there aren't functions which would be  bad consumers or  bad producers.Empty . with exactly one element.L.fromPull $ singleton True True ::: VNilConvert  to list. Convert list [a] to  n a . Returns  if lengths don't match exactly.:L.fromPull <$> fromList "foo" :: Maybe (L.Vec N.Nat3 Char)#Just ('f' ::: 'o' ::: 'o' ::: VNil);L.fromPull <$> fromList "quux" :: Maybe (L.Vec N.Nat3 Char)Nothing9L.fromPull <$> fromList "xy" :: Maybe (L.Vec N.Nat3 Char)NothingPrism from list. Convert list [a] to  n a . Returns  if input list is too short.@L.fromPull <$> fromListPrefix "foo" :: Maybe (L.Vec N.Nat3 Char)#Just ('f' ::: 'o' ::: 'o' ::: VNil)AL.fromPull <$> fromListPrefix "quux" :: Maybe (L.Vec N.Nat3 Char)#Just ('q' ::: 'u' ::: 'u' ::: VNil)?L.fromPull <$> fromListPrefix "xy" :: Maybe (L.Vec N.Nat3 Char)Nothing Reify any list [a] to  n a.reifyList "foo" length3  Indexing.  Index lens.@('a' L.::: 'b' L.::: 'c' L.::: L.VNil) ^. L._Pull . ix (F.S F.Z)'b'F('a' L.::: 'b' L.::: 'c' L.::: L.VNil) & L._Pull . ix (F.S F.Z) .~ 'x''a' ::: 'x' ::: 'c' ::: VNil Match on non-empty .Note: lens  is a  . In fact,  n a cannot have an instance of  as types don't match.  Head lens. Note: lens  is a .9('a' L.::: 'b' L.::: 'c' L.::: L.VNil) ^. L._Pull . _head'a'?('a' L.::: 'b' L.::: 'c' L.::: L.VNil) & L._Pull . _head .~ 'x''x' ::: 'b' ::: 'c' ::: VNil Head lens. Note: lens  is a .The first element of a .The elements after the  of a .6over L._Pull (map not) (True L.::: False L.::: L.VNil)False ::: True ::: VNil>over L._Pull (imap (,)) ('a' L.::: 'b' L.::: 'c' L.::: L.VNil)((0,'a') ::: (1,'b') ::: (2,'c') ::: VNilSee .See .See ."There is no type-class for this :( Right fold.Right fold with an index.Strict left fold.Yield the length of a .Test whether a  is empty.Strict .Strict .Zip two s with a function.Zip two 9s. with a function that also takes the elements' indices.  Monadic bind.! Monadic join."Get all  n in a  n.0L.fromPull (universe :: Vec N.Nat3 (Fin N.Nat3))0 ::: 1 ::: 2 ::: VNil5  !"#$%&'()*+,-./0#  !"#  !"1  !"#$%&'()*+,-./0None%&,/09;<=?DORTa11Write functions on 4. Use them with tuples.1S can be used to avoid "this function won't change the length of the list" in DSLs.bad: Instead of /[x, y] <- badDslMagic ["foo", "bar"] -- list! good: we can write <(x, y) <- betterDslMagic ("foo", "bar") -- homogenic tuple! where betterDslMagic can be defined using 3.4!Vector, i.e. length-indexed list.7Empty 4.84 with exactly one element.singleton True True ::: VNil9O(n) . Recover  (and ) dictionary from a 4 value. Example:  is constrained with  n, but if we have a 4 n a!, we can recover that dictionary:klet f :: forall n a. Vec n a -> N.Nat; f v = withDict v (N.reflect (Proxy :: Proxy n)) in f (True ::: VNil)1Note: using  will be suboptimal, as if GHC has no opportunity to optimise the code, the recusion won't be unfold. How bad such code will perform? I don't know, we'll need benchmarks.:Convert to pull .;Convert from pull .<An  from : and ;.=Convert 4 to list.%toList $ 'f' ::: 'o' ::: 'o' ::: VNil"foo"> Convert list [a] to 4 n a . Returns  if lengths don't match exactly.)fromList "foo" :: Maybe (Vec N.Nat3 Char)#Just ('f' ::: 'o' ::: 'o' ::: VNil)*fromList "quux" :: Maybe (Vec N.Nat3 Char)Nothing(fromList "xy" :: Maybe (Vec N.Nat3 Char)Nothing?Prism from list.("foo" ^? _Vec :: Maybe (Vec N.Nat3 Char)#Just ('f' ::: 'o' ::: 'o' ::: VNil)("foo" ^? _Vec :: Maybe (Vec N.Nat2 Char)Nothing _Vec # (True ::: False ::: VNil) [True,False]@ Convert list [a] to 4 n a . Returns  if input list is too short./fromListPrefix "foo" :: Maybe (Vec N.Nat3 Char)#Just ('f' ::: 'o' ::: 'o' ::: VNil)0fromListPrefix "quux" :: Maybe (Vec N.Nat3 Char)#Just ('q' ::: 'u' ::: 'u' ::: VNil).fromListPrefix "xy" :: Maybe (Vec N.Nat3 Char)NothingAReify any list [a] to 4 n a.reifyList "foo" length3B Indexing.(('a' ::: 'b' ::: 'c' ::: VNil) ! F.S F.Z'b'C Index lens..('a' ::: 'b' ::: 'c' ::: VNil) ^. ix (F.S F.Z)'b'4('a' ::: 'b' ::: 'c' ::: VNil) & ix (F.S F.Z) .~ 'x''a' ::: 'x' ::: 'c' ::: VNilDMatch on non-empty 4.Note: lens  is a  . In fact, 4 n a cannot have an instance of  as types don't match.E Head lens. Note: lens  is a .'('a' ::: 'b' ::: 'c' ::: VNil) ^. _head'a'-('a' ::: 'b' ::: 'c' ::: VNil) & _head .~ 'x''x' ::: 'b' ::: 'c' ::: VNilF Head lens. Note: lens  is a .GCons an element in front of a 4.HThe first element of a 4.IThe elements after the H of a 4.J Append two 4.0('a' ::: 'b' ::: VNil) ++ ('c' ::: 'd' ::: VNil)$'a' ::: 'b' ::: 'c' ::: 'd' ::: VNilK(Split vector into two parts. Inverse of J.Jsplit ('a' ::: 'b' ::: 'c' ::: VNil) :: (Vec N.Nat1 Char, Vec N.Nat2 Char)#('a' ::: VNil,'b' ::: 'c' ::: VNil)Yuncurry (++) (split ('a' ::: 'b' ::: 'c' ::: VNil) :: (Vec N.Nat1 Char, Vec N.Nat2 Char))'a' ::: 'b' ::: 'c' ::: VNilLMap over all the elements of a 4 and concatenate the resulting 4s.9concatMap (\x -> x ::: x ::: VNil) ('a' ::: 'b' ::: VNil)$'a' ::: 'a' ::: 'b' ::: 'b' ::: VNilM L N Inverse of M.Fchunks <$> fromListPrefix [1..] :: Maybe (Vec N.Nat2 (Vec N.Nat3 Int))EJust ((1 ::: 2 ::: 3 ::: VNil) ::: (4 ::: 5 ::: 6 ::: VNil) ::: VNil).let idVec x = x :: Vec N.Nat2 (Vec N.Nat3 Int)0concat . idVec . chunks <$> fromListPrefix [1..]/Just (1 ::: 2 ::: 3 ::: 4 ::: 5 ::: 6 ::: VNil)O!map not $ True ::: False ::: VNilFalse ::: True ::: VNilP'imap (,) $ 'a' ::: 'b' ::: 'c' ::: VNil((0,'a') ::: (1,'b') ::: (2,'c') ::: VNilQ&Apply an action to every element of a 4 , yielding a 4 of results.RApply an action to non-empty 4 , yielding a 4 of results.S&Apply an action to every element of a 4 and its index, yielding a 4 of results.T&Apply an action to every element of a 4% and its index, ignoring the results.USee .VSee .WSee .X"There is no type-class for this :(Y Right fold.ZRight fold with an index.[Strict left fold.\Yield the length of a 4. O(n)]Test whether a 4 is empty. O(1)^ Non-strict ^._ Non-strict _.`Zip two 4s with a function.aZip two 49s. with a function that also takes the elements' indices.b Monadic bind.c Monadic join.Ajoin $ ('a' ::: 'b' ::: VNil) ::: ('c' ::: 'd' ::: VNil) ::: VNil'a' ::: 'd' ::: VNildGet all  n in a 4 n.#universe :: Vec N.Nat3 (Fin N.Nat3)0 ::: 1 ::: 2 ::: VNilq4 doesn't have  instance, as we cannot remove value from 4. See C in  Data.Vec.Lazy module for an  (not ).b123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~4123465789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd4456789:;<=>?@ABCDEFGHIJKLMNUVWXYZ[\]^_OPQRST`abcd123V123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~65J5None%&,9;<=?DORTa"Convert to pull .Convert from pull .An  from  and .Convert 4 to list.%toList $ 'f' ::: 'o' ::: 'o' ::: VNil"foo" Convert list [a] to 4 n a . Returns  if lengths don't match exactly.)fromList "foo" :: Maybe (Vec N.Nat3 Char)#Just ('f' ::: 'o' ::: 'o' ::: VNil)*fromList "quux" :: Maybe (Vec N.Nat3 Char)Nothing(fromList "xy" :: Maybe (Vec N.Nat3 Char)NothingPrism from list.("foo" ^? _Vec :: Maybe (Vec N.Nat3 Char)#Just ('f' ::: 'o' ::: 'o' ::: VNil)("foo" ^? _Vec :: Maybe (Vec N.Nat2 Char)Nothing _Vec # (True ::: False ::: VNil) [True,False] Convert list [a] to 4 n a . Returns  if input list is too short./fromListPrefix "foo" :: Maybe (Vec N.Nat3 Char)#Just ('f' ::: 'o' ::: 'o' ::: VNil)0fromListPrefix "quux" :: Maybe (Vec N.Nat3 Char)#Just ('q' ::: 'u' ::: 'u' ::: VNil).fromListPrefix "xy" :: Maybe (Vec N.Nat3 Char)Nothing Indexing.(('a' ::: 'b' ::: 'c' ::: VNil) ! F.S F.Z'b' Index lens..('a' ::: 'b' ::: 'c' ::: VNil) ^. ix (F.S F.Z)'b'4('a' ::: 'b' ::: 'c' ::: VNil) & ix (F.S F.Z) .~ 'x''a' ::: 'x' ::: 'c' ::: VNil Append two 4.0('a' ::: 'b' ::: VNil) ++ ('c' ::: 'd' ::: VNil)$'a' ::: 'b' ::: 'c' ::: 'd' ::: VNil(Split vector into two parts. Inverse of .Jsplit ('a' ::: 'b' ::: 'c' ::: VNil) :: (Vec N.Nat1 Char, Vec N.Nat2 Char)#('a' ::: VNil,'b' ::: 'c' ::: VNil)Yuncurry (++) (split ('a' ::: 'b' ::: 'c' ::: VNil) :: (Vec N.Nat1 Char, Vec N.Nat2 Char))'a' ::: 'b' ::: 'c' ::: VNilMap over all the elements of a 4 and concatenate the resulting 4s.9concatMap (\x -> x ::: x ::: VNil) ('a' ::: 'b' ::: VNil)$'a' ::: 'a' ::: 'b' ::: 'b' ::: VNil   Inverse of .Fchunks <$> fromListPrefix [1..] :: Maybe (Vec N.Nat2 (Vec N.Nat3 Int))EJust ((1 ::: 2 ::: 3 ::: VNil) ::: (4 ::: 5 ::: 6 ::: VNil) ::: VNil).let idVec x = x :: Vec N.Nat2 (Vec N.Nat3 Int)0concat . idVec . chunks <$> fromListPrefix [1..]/Just (1 ::: 2 ::: 3 ::: 4 ::: 5 ::: 6 ::: VNil)!map not $ True ::: False ::: VNilFalse ::: True ::: VNil'imap (,) $ 'a' ::: 'b' ::: 'c' ::: VNil((0,'a') ::: (1,'b') ::: (2,'c') ::: VNil&Apply an action to every element of a 4 , yielding a 4 of results.Apply an action to non-empty 4 , yielding a 4 of results.&Apply an action to every element of a 4 and its index, yielding a 4 of results.&Apply an action to every element of a 4% and its index, ignoring the results.See .See .See ."There is no type-class for this :( Right fold.Right fold with an index.Yield the length of a 4. O(n) Non-strict . Non-strict .Zip two 4s with a function.Zip two 49s. with a function that also takes the elements' indices. Monadic bind. Monadic join.Ajoin $ ('a' ::: 'b' ::: VNil) ::: ('c' ::: 'd' ::: VNil) ::: VNil'a' ::: 'd' ::: VNilGet all  n in a 4 n.#universe :: Vec N.Nat3 (Fin N.Nat3)0 ::: 1 ::: 2 ::: VNils     212346578ADEFGHI]245678ADEFGHI]123=     5      !"#$%&'()*+,-./0123456789:;  <=>?   @ABCDEFGHI !"#$%&'(JKLMNOPQRSTUVWX)*+,-./0123YZ[\]45^_6=>?   ABCDEFGHI "#$%&'(`abcdcefcdgcdceh`ijkclmnopqqr@nstnsunsvcew`axcyzce{ce|}}~qqr}}~qqrvec-0-AGvJ8AhSLXiJtyofEDl2wY Data.Vec.Pull Data.Vec.LazyData.Vec.Lazy.InlineIFoldable Foldable1VecunVecempty singletontoListfromList_VecfromListPrefix reifyList!ix_Cons_head_tailheadtailmapimapfoldMapfoldMap1ifoldMap ifoldMap1foldrifoldrfoldl'lengthnullsumproductzipWithizipWithbindjoinuniverse$fFoldableWithIndexFinVec$fFunctorWithIndexFinVec $fBindVec $fApplyVec $fBoringVec $fMonoidVec$fSemigroupVec$fRepresentableVec$fDistributiveVec $fMonadVec$fApplicativeVec $fFoldableVec $fFunctorVec$fEqVecVecEach mapWithVectraverseWithVecVNil:::withDicttoPullfromPull_Pullcons++split concatMapconcatchunkstraverse traverse1 itraverse itraverse_$fVecEach(,,,)(,,,)ab$fVecEach(,,)(,,)ab$fVecEach(,)(,)ab$fField9VecVecaa$fField8VecVecaa$fField7VecVecaa$fField6VecVecaa$fField5VecVecaa$fField4VecVecaa$fField3VecVecaa$fField2VecVecaa$fField1VecVecaa $fIxedVec$fEachVecVecab$fTraversableWithIndexFinVec $fHashableVec $fNFDataVec$fTraversable1Vec$fTraversableVec$fFoldable1Vec $fShowVec$fOrdVecbaseGHC.BaseNothing"lens-4.15.4-KUno97tdZMYJKCU13eoExKControl.Lens.ConsControl.Lens.TypePrismCons Traversal' Data.Foldable*semigroupoids-5.2.1-IU4HpkwGPL3Fx514WC3V5VData.Semigroup.Foldable.ClassControl.Lens.IndexedFoldableWithIndexfin-0-B8G1uzOurLF8PB8lXwtW3ZData.FinFinFromList getFromList Data.Type.NatInlineInductionSNatIreflectIsoidControl.Lens.AtAtLens TraversalUniverse getUniverseChunks getChunksSplitappSplitJoingetJoinBindgetBindIZipWith getIZipWithZipWith getZipWithLength getLengthIFoldr getIFoldr IFoldMap1 getIFoldMap1IFoldMap getIFoldMapFold1getFold1FoldgetFold ITraverse_ getITraverse_ ITraverse getITraverse Traverse1 getTraverse1Traverse getTraverseIMapgetIMapMapgetMap ConcatMap getConcatMapAppend getAppendIxLens getIxLensIndexappIndexToList getToListFromPull getFromPullToPull getToPull