F      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None ,-1>?FQTV,2!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 ::: VNil#  !"#  !"None&'-01;=>?AFQTVcrN10Write functions on 3. Use them with tuples.0S 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 2.3!Vector, i.e. length-indexed list.6Empty 3.73 with exactly one element.singleton True True ::: VNil8O(n) . Recover  (and ) dictionary from a 3 value. Example:  is constrained with  n, but if we have a 3 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.9Convert to pull .:Convert from pull .;An  from 9 and :.<Convert 3 to list.%toList $ 'f' ::: 'o' ::: 'o' ::: VNil"foo"= Convert list [a] to 3 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 3 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@Reify any list [a] to 3 n a.reifyList "foo" length3A Indexing.(('a' ::: 'b' ::: 'c' ::: VNil) ! F.S F.Z'b'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' ::: VNilCMatch on non-empty 3.Note: lens  is a  . In fact, 3 n a cannot have an instance of  as types don't match.D Head lens. Note: lens  is a .'('a' ::: 'b' ::: 'c' ::: VNil) ^. _head'a'-('a' ::: 'b' ::: 'c' ::: VNil) & _head .~ 'x''x' ::: 'b' ::: 'c' ::: VNilE Head lens. Note: lens  is a .FCons an element in front of a 3.GThe first element of a 3.HThe elements after the G of a 3.I Append two 3.0('a' ::: 'b' ::: VNil) ++ ('c' ::: 'd' ::: VNil)$'a' ::: 'b' ::: 'c' ::: 'd' ::: VNilJ(Split vector into two parts. Inverse of I.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' ::: VNilKMap over all the elements of a 3 and concatenate the resulting 3s.9concatMap (\x -> x ::: x ::: VNil) ('a' ::: 'b' ::: VNil)$'a' ::: 'a' ::: 'b' ::: 'b' ::: VNilL K M Inverse of L.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)N!map not $ True ::: False ::: VNilFalse ::: True ::: VNilO'imap (,) $ 'a' ::: 'b' ::: 'c' ::: VNil((0,'a') ::: (1,'b') ::: (2,'c') ::: VNilP&Apply an action to every element of a 3 , yielding a 3 of results.QApply an action to non-empty 3 , yielding a 3 of results.R&Apply an action to every element of a 3 and its index, yielding a 3 of results.S&Apply an action to every element of a 3% and its index, ignoring the results.TSee .USee .VSee .W"There is no type-class for this :(X Right fold.YRight fold with an index.ZStrict left fold.[Yield the length of a 3. O(n)\Test whether a 3 is empty. O(1)] Non-strict ].^ Non-strict ^._Zip two 3s with a function.`Zip two 39s. with a function that also takes the elements' indices.a Monadic bind.b Monadic join.Ajoin $ ('a' ::: 'b' ::: VNil) ::: ('c' ::: 'd' ::: VNil) ::: VNil'a' ::: 'd' ::: VNilcGet all  n in a 3 n.#universe :: Vec N.Nat3 (Fin N.Nat3)0 ::: 1 ::: 2 ::: VNilm3 doesn't have  instance, as we cannot remove value from 3. See B in  Data.Vec.Lazy module for an  (not ).40123546789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc43456789:;<=>?@ABCDEFGHIJKLMTUVWXYZ[\]^NOPQRS_`abc01201234555I5None&'-;=>?AFQTVc>"Convert to pull .Convert from pull .An  from  and .Convert 3 to list.%toList $ 'f' ::: 'o' ::: 'o' ::: VNil"foo" Convert list [a] to 3 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 3 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 3.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 3 and concatenate the resulting 3s.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 3 , yielding a 3 of results.Apply an action to non-empty 3 , yielding a 3 of results.&Apply an action to every element of a 3 and its index, yielding a 3 of results.&Apply an action to every element of a 3% 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 3. O(n) Non-strict . Non-strict .Zip two 3s with a function.Zip two 39s. 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 3 n.#universe :: Vec N.Nat3 (Fin N.Nat3)0 ::: 1 ::: 2 ::: VNil201235467@CDEFGH\234567@CDEFGH\012     5      !"#$%&'()*+,-./0123456789:  ;<=>   ?@ABCDEFGH !"#$%&'(IJKLMNOPQRST)*+,-./012UVWXY34Z[\]^5<=>   @ABCDEFGH "#$%&'(_`abcbdebcfbcbdg_hijbklmnoppqmrsmrtmrubdv_`wbxybdzbd{||}~~ppq||}~~ppqvec-0.1-IwvDdRfb5YXAL0bV2aS4qh Data.Vec.Pull Data.Vec.LazyData.Vec.Lazy.InlineIFoldable Foldable1VecunVecempty singletontoListfromList_VecfromListPrefix reifyList!ix_Cons_head_tailheadtailmapimapfoldMapfoldMap1ifoldMap ifoldMap1foldrifoldrfoldl'lengthnullsumproductzipWithizipWithbindjoinuniverse$fFoldableWithIndexFinVec$fFunctorWithIndexFinVec $fBindVec $fApplyVec $fMonoidVec$fSemigroupVec$fRepresentableVec$fDistributiveVec $fMonadVec$fApplicativeVec $fFoldableVec $fFunctorVec$fEqVecVecEach mapWithVectraverseWithVecVNil:::withDicttoPullfromPull_Pullcons++split concatMapconcatchunkstraverse traverse1 itraverse itraverse_$fField9VecVecaa$fField8VecVecaa$fField7VecVecaa$fField6VecVecaa$fField5VecVecaa$fField4VecVecaa$fField3VecVecaa$fField2VecVecaa$fField1VecVecaa $fIxedVec$fEachVecVecab$fTraversableWithIndexFinVec $fHashableVec $fNFDataVec$fTraversable1Vec$fTraversableVec$fFoldable1Vec $fShowVec$fVecEach(,,,)(,,,)ab$fVecEach(,,)(,,)ab$fVecEach(,)(,)ab$fOrdVecbaseGHC.BaseNothing lens-4.16-HMQujQXnTXF5IKhPx32gmCControl.Lens.ConsControl.Lens.TypePrismCons Traversal' Data.Foldable*semigroupoids-5.2.2-Io4kN4mXLQDIaxcJHgdpaLData.Semigroup.Foldable.ClassControl.Lens.IndexedFoldableWithIndex fin-0.0.1-4SyNI3iitqrKb4b90CmxeNData.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