vec-lens-0.3: Vec: length-indexed (sized) list: lens support

Safe HaskellNone
LanguageHaskell2010

Data.Vec.DataFamily.SpineStrict.Lens

Contents

Synopsis

Indexing

ix :: forall n f a. (InlineInduction n, Functor f) => Fin n -> LensLike' f (Vec n a) a Source #

Index lens.

>>> ('a' ::: 'b' ::: 'c' ::: VNil) ^. ix (FS FZ)
'b'
>>> ('a' ::: 'b' ::: 'c' ::: VNil) & ix (FS FZ) .~ 'x'
'a' ::: 'x' ::: 'c' ::: VNil

_Cons :: Iso (Vec (S n) a) (Vec (S n) b) (a, Vec n a) (b, Vec n b) Source #

Match on non-empty Vec.

Note: lens _Cons is a Prism. In fact, Vec n a cannot have an instance of Cons as types don't match.

_head :: Lens' (Vec (S n) a) a Source #

Head lens. Note: lens _head is a Traversal'.

>>> ('a' ::: 'b' ::: 'c' ::: VNil) ^. _head
'a'
>>> ('a' ::: 'b' ::: 'c' ::: VNil) & _head .~ 'x'
'x' ::: 'b' ::: 'c' ::: VNil

_tail :: Lens' (Vec (S n) a) (Vec n a) Source #

Head lens. Note: lens _head is a Traversal'.

Conversions

_Pull :: InlineInduction n => Iso (Vec n a) (Vec n b) (Vec n a) (Vec n b) Source #

An Iso from toPull and fromPull.

_Vec :: InlineInduction n => Prism' [a] (Vec n a) Source #

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]

Orphan instances

InlineInduction n => FunctorWithIndex (Fin n) (Vec n) Source # 
Instance details

Methods

imap :: (Fin n -> a -> b) -> Vec n a -> Vec n b #

imapped :: IndexedSetter (Fin n) (Vec n a) (Vec n b) a b #

InlineInduction n => FoldableWithIndex (Fin n) (Vec n) Source # 
Instance details

Methods

ifoldMap :: Monoid m => (Fin n -> a -> m) -> Vec n a -> m #

ifolded :: IndexedFold (Fin n) (Vec n a) a #

ifoldr :: (Fin n -> a -> b -> b) -> b -> Vec n a -> b #

ifoldl :: (Fin n -> b -> a -> b) -> b -> Vec n a -> b #

ifoldr' :: (Fin n -> a -> b -> b) -> b -> Vec n a -> b #

ifoldl' :: (Fin n -> b -> a -> b) -> b -> Vec n a -> b #

InlineInduction n => TraversableWithIndex (Fin n) (Vec n) Source # 
Instance details

Methods

itraverse :: Applicative f => (Fin n -> a -> f b) -> Vec n a -> f (Vec n b) #

itraversed :: IndexedTraversal (Fin n) (Vec n a) (Vec n b) a b #

InlineInduction n => Ixed (Vec n a) Source #

Vec doesn't have At instance, as we cannot remove value from Vec. See ix in Data.Vec.DataFamily.SpineStrict module for an Lens (not Traversal).

Instance details

Methods

ix :: Index (Vec n a) -> Traversal' (Vec n a) (IxValue (Vec n a)) #

InlineInduction n => Each (Vec n a) (Vec n b) a b Source # 
Instance details

Methods

each :: Traversal (Vec n a) (Vec n b) a b #

Field1 (Vec (S n) a) (Vec (S n) a) a a Source # 
Instance details

Methods

_1 :: Lens (Vec (S n) a) (Vec (S n) a) a a #

Field2 (Vec (S (S n)) a) (Vec (S (S n)) a) a a Source # 
Instance details

Methods

_2 :: Lens (Vec (S (S n)) a) (Vec (S (S n)) a) a a #

Field3 (Vec (S (S (S n))) a) (Vec (S (S (S n))) a) a a Source # 
Instance details

Methods

_3 :: Lens (Vec (S (S (S n))) a) (Vec (S (S (S n))) a) a a #

Field4 (Vec (S (S (S (S n)))) a) (Vec (S (S (S (S n)))) a) a a Source # 
Instance details

Methods

_4 :: Lens (Vec (S (S (S (S n)))) a) (Vec (S (S (S (S n)))) a) a a #

Field5 (Vec (S (S (S (S (S n))))) a) (Vec (S (S (S (S (S n))))) a) a a Source # 
Instance details

Methods

_5 :: Lens (Vec (S (S (S (S (S n))))) a) (Vec (S (S (S (S (S n))))) a) a a #

Field6 (Vec (S (S (S (S (S (S n)))))) a) (Vec (S (S (S (S (S (S n)))))) a) a a Source # 
Instance details

Methods

_6 :: Lens (Vec (S (S (S (S (S (S n)))))) a) (Vec (S (S (S (S (S (S n)))))) a) a a #

Field7 (Vec (S (S (S (S (S (S (S n))))))) a) (Vec (S (S (S (S (S (S (S n))))))) a) a a Source # 
Instance details

Methods

_7 :: Lens (Vec (S (S (S (S (S (S (S n))))))) a) (Vec (S (S (S (S (S (S (S n))))))) a) a a #

Field8 (Vec (S (S (S (S (S (S (S (S n)))))))) a) (Vec (S (S (S (S (S (S (S (S n)))))))) a) a a Source # 
Instance details

Methods

_8 :: Lens (Vec (S (S (S (S (S (S (S (S n)))))))) a) (Vec (S (S (S (S (S (S (S (S n)))))))) a) a a #

Field9 (Vec (S (S (S (S (S (S (S (S (S n))))))))) a) (Vec (S (S (S (S (S (S (S (S (S n))))))))) a) a a Source # 
Instance details

Methods

_9 :: Lens (Vec (S (S (S (S (S (S (S (S (S n))))))))) a) (Vec (S (S (S (S (S (S (S (S (S n))))))))) a) a a #