, foldr
, zip
, unzip
- , shiftl
- , shiftr
+ , shiftIntoL
+ , shiftIntoR
, rotl
, rotr
, concat
null :: Vector D0 a -> Bool
null _ = True
-(!) :: ( PositiveT s
- , NaturalT u
- , (s :>: u) ~ True) => Vector s a -> Index u -> a
+(!) :: PositiveT s => Vector s a -> Index s -> a
(Vector xs) ! i = xs !! (fromInteger (toInteger i))
-- ==========================
-- = Transforming functions =
-- ==========================
-replace :: (PositiveT s, NaturalT u, (s :>: u) ~ True) =>
- Vector s a -> Index u -> a -> Vector s a
+replace :: PositiveT s =>
+ Vector s a -> Index s -> a -> Vector s a
replace (Vector xs) i y = Vector $ replace' xs (toInteger i) y
where replace' [] _ _ = []
replace' (_:xs) 0 y = (y:xs)
unzip :: Vector s (a, b) -> (Vector s a, Vector s b)
unzip (Vector xs) = let (a,b) = P.unzip xs in (Vector a, Vector b)
-shiftl :: (PositiveT s, NaturalT n, n ~ Pred s, s ~ Succ n) =>
- Vector s a -> a -> Vector s a
-shiftl xs x = x +> init xs
+shiftIntoL :: (PositiveT s, NaturalT n, n ~ Pred s, s ~ Succ n) =>
+ Vector s a -> a -> Vector s a
+shiftIntoL xs x = x +> init xs
-shiftr :: (PositiveT s, NaturalT n, n ~ Pred s, s ~ Succ n) =>
- Vector s a -> a -> Vector s a
-shiftr xs x = tail xs <+ x
+shiftIntoR :: (PositiveT s, NaturalT n, n ~ Pred s, s ~ Succ n) =>
+ Vector s a -> a -> Vector s a
+shiftIntoR xs x = tail xs <+ x
rotl :: forall s a . NaturalT s => Vector s a -> Vector s a
rotl = liftV rotl'