packages feed

vector-sized 0.5.1.0 → 0.6.1.0

raw patch · 5 files changed

+262/−154 lines, 5 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Data.Vector.Generic.Sized: _head :: forall v n a f. (KnownNat n, Vector v a, Functor f) => (a -> f a) -> Vector v (1 + n) a -> f (Vector v (1 + n) a)
+ Data.Vector.Generic.Sized: _last :: forall v n a f. (KnownNat n, Vector v a, Functor f) => (a -> f a) -> Vector v (n + 1) a -> f (Vector v (n + 1) a)
+ Data.Vector.Generic.Sized: instance (Data.Vector.Generic.Base.Vector v a, GHC.Float.Floating a, GHC.TypeLits.KnownNat n) => GHC.Float.Floating (Data.Vector.Generic.Sized.Vector v n a)
+ Data.Vector.Generic.Sized: instance (Data.Vector.Generic.Base.Vector v a, GHC.Num.Num a, GHC.TypeLits.KnownNat n) => GHC.Num.Num (Data.Vector.Generic.Sized.Vector v n a)
+ Data.Vector.Generic.Sized: instance (Data.Vector.Generic.Base.Vector v a, GHC.Real.Fractional a, GHC.TypeLits.KnownNat n) => GHC.Real.Fractional (Data.Vector.Generic.Sized.Vector v n a)
+ Data.Vector.Generic.Sized: ix :: forall v n a f. (KnownNat n, Vector v a, Functor f) => Finite n -> (a -> f a) -> Vector v n a -> f (Vector v n a)
+ Data.Vector.Sized: _head :: forall n a f. (KnownNat n, Functor f) => (a -> f a) -> Vector (1 + n) a -> f (Vector (1 + n) a)
+ Data.Vector.Sized: _last :: forall n a f. (KnownNat n, Functor f) => (a -> f a) -> Vector (n + 1) a -> f (Vector (n + 1) a)
+ Data.Vector.Sized: ix :: forall n a f. (KnownNat n, Functor f) => Finite n -> (a -> f a) -> Vector n a -> f (Vector n a)
+ Data.Vector.Storable.Sized: _head :: forall n a f. (KnownNat n, Storable a, Functor f) => (a -> f a) -> Vector (1 + n) a -> f (Vector (1 + n) a)
+ Data.Vector.Storable.Sized: _last :: forall n a f. (KnownNat n, Storable a, Functor f) => (a -> f a) -> Vector (n + 1) a -> f (Vector (n + 1) a)
+ Data.Vector.Storable.Sized: ix :: forall n a f. (KnownNat n, Storable a, Functor f) => Finite n -> (a -> f a) -> Vector n a -> f (Vector n a)
- Data.Vector.Generic.Sized: cons :: forall v n a. Vector v a => a -> Vector v n a -> Vector v (n + 1) a
+ Data.Vector.Generic.Sized: cons :: forall v n a. Vector v a => a -> Vector v n a -> Vector v (1 + n) a
- Data.Vector.Generic.Sized: drop :: forall v n m a. (KnownNat n, KnownNat m, Vector v a) => Vector v (m + n) a -> Vector v m a
+ Data.Vector.Generic.Sized: drop :: forall v n m a. (KnownNat n, KnownNat m, Vector v a) => Vector v (n + m) a -> Vector v m a
- Data.Vector.Generic.Sized: drop' :: forall v n m a. (KnownNat n, KnownNat m, Vector v a) => Proxy n -> Vector v (m + n) a -> Vector v m a
+ Data.Vector.Generic.Sized: drop' :: forall v n m a p. (KnownNat n, KnownNat m, Vector v a) => p n -> Vector v (n + m) a -> Vector v m a
- Data.Vector.Generic.Sized: enumFromN' :: forall v n a. (KnownNat n, Vector v a, Num a) => a -> Proxy n -> Vector v n a
+ Data.Vector.Generic.Sized: enumFromN' :: forall v n a p. (KnownNat n, Vector v a, Num a) => a -> p n -> Vector v n a
- Data.Vector.Generic.Sized: enumFromStepN' :: forall v n a. (KnownNat n, Vector v a, Num a) => a -> a -> Proxy n -> Vector v n a
+ Data.Vector.Generic.Sized: enumFromStepN' :: forall v n a p. (KnownNat n, Vector v a, Num a) => a -> a -> p n -> Vector v n a
- Data.Vector.Generic.Sized: fold1M :: (Monad m, Vector v a, KnownNat n) => (a -> a -> m a) -> Vector v (n + 1) a -> m a
+ Data.Vector.Generic.Sized: fold1M :: (Monad m, Vector v a, KnownNat n) => (a -> a -> m a) -> Vector v (1 + n) a -> m a
- Data.Vector.Generic.Sized: foldl1 :: (Vector v a, KnownNat n) => (a -> a -> a) -> Vector v (n + 1) a -> a
+ Data.Vector.Generic.Sized: foldl1 :: (Vector v a, KnownNat n) => (a -> a -> a) -> Vector v (1 + n) a -> a
- Data.Vector.Generic.Sized: foldl1' :: (Vector v a, KnownNat n) => (a -> a -> a) -> Vector v (n + 1) a -> a
+ Data.Vector.Generic.Sized: foldl1' :: (Vector v a, KnownNat n) => (a -> a -> a) -> Vector v (1 + n) a -> a
- Data.Vector.Generic.Sized: fromListN' :: forall v n a. (Vector v a, KnownNat n) => Proxy n -> [a] -> Maybe (Vector v n a)
+ Data.Vector.Generic.Sized: fromListN' :: forall v n a p. (Vector v a, KnownNat n) => p n -> [a] -> Maybe (Vector v n a)
- Data.Vector.Generic.Sized: generate' :: forall v n a. (KnownNat n, Vector v a) => Proxy n -> (Int -> a) -> Vector v n a
+ Data.Vector.Generic.Sized: generate' :: forall v n a p. (KnownNat n, Vector v a) => p n -> (Int -> a) -> Vector v n a
- Data.Vector.Generic.Sized: generateM' :: forall v n m a. (KnownNat n, Vector v a, Monad m) => Proxy n -> (Int -> m a) -> m (Vector v n a)
+ Data.Vector.Generic.Sized: generateM' :: forall v n m a p. (KnownNat n, Vector v a, Monad m) => p n -> (Int -> m a) -> m (Vector v n a)
- Data.Vector.Generic.Sized: head :: forall v n a. (Vector v a) => Vector v (n + 1) a -> a
+ Data.Vector.Generic.Sized: head :: forall v n a. (Vector v a) => Vector v (1 + n) a -> a
- Data.Vector.Generic.Sized: headM :: forall v n a m. (KnownNat n, Vector v a, Monad m) => Vector v (n + 1) a -> m a
+ Data.Vector.Generic.Sized: headM :: forall v n a m. (KnownNat n, Vector v a, Monad m) => Vector v (1 + n) a -> m a
- Data.Vector.Generic.Sized: index' :: forall v n m a. (KnownNat n, KnownNat m, Vector v a) => Vector v ((n + m) + 1) a -> Proxy n -> a
+ Data.Vector.Generic.Sized: index' :: forall v n m a p. (KnownNat n, KnownNat m, Vector v a) => Vector v ((n + m) + 1) a -> p n -> a
- Data.Vector.Generic.Sized: indexM' :: forall v n k a m. (KnownNat n, KnownNat k, Vector v a, Monad m) => Vector v (n + k) a -> Proxy n -> m a
+ Data.Vector.Generic.Sized: indexM' :: forall v n k a m p. (KnownNat n, KnownNat k, Vector v a, Monad m) => Vector v (n + k) a -> p n -> m a
- Data.Vector.Generic.Sized: iterateN' :: forall v n a. (KnownNat n, Vector v a) => Proxy n -> (a -> a) -> a -> Vector v n a
+ Data.Vector.Generic.Sized: iterateN' :: forall v n a p. (KnownNat n, Vector v a) => p n -> (a -> a) -> a -> Vector v n a
- Data.Vector.Generic.Sized: replicate' :: forall v n a. (KnownNat n, Vector v a) => Proxy n -> a -> Vector v n a
+ Data.Vector.Generic.Sized: replicate' :: forall v n a p. (KnownNat n, Vector v a) => p n -> a -> Vector v n a
- Data.Vector.Generic.Sized: replicateM' :: forall v n m a. (KnownNat n, Vector v a, Monad m) => Proxy n -> m a -> m (Vector v n a)
+ Data.Vector.Generic.Sized: replicateM' :: forall v n m a p. (KnownNat n, Vector v a, Monad m) => p n -> m a -> m (Vector v n a)
- Data.Vector.Generic.Sized: slice :: forall v i n a. (KnownNat i, KnownNat n, Vector v a) => Proxy i -> Vector v (i + n) a -> Vector v n a
+ Data.Vector.Generic.Sized: slice :: forall v i n m a p. (KnownNat i, KnownNat n, KnownNat m, Vector v a) => p i -> Vector v ((i + n) + m) a -> Vector v n a
- Data.Vector.Generic.Sized: slice' :: forall v i n a. (KnownNat i, KnownNat n, Vector v a) => Proxy i -> Proxy n -> Vector v (i + n) a -> Vector v n a
+ Data.Vector.Generic.Sized: slice' :: forall v i n m a p. (KnownNat i, KnownNat n, KnownNat m, Vector v a) => p i -> p n -> Vector v ((i + n) + m) a -> Vector v n a
- Data.Vector.Generic.Sized: splitAt' :: forall v n m a. (KnownNat n, KnownNat m, Vector v a) => Proxy n -> Vector v (n + m) a -> (Vector v n a, Vector v m a)
+ Data.Vector.Generic.Sized: splitAt' :: forall v n m a p. (KnownNat n, KnownNat m, Vector v a) => p n -> Vector v (n + m) a -> (Vector v n a, Vector v m a)
- Data.Vector.Generic.Sized: tail :: forall v n a. (Vector v a) => Vector v (n + 1) a -> Vector v n a
+ Data.Vector.Generic.Sized: tail :: forall v n a. (Vector v a) => Vector v (1 + n) a -> Vector v n a
- Data.Vector.Generic.Sized: take :: forall v n m a. (KnownNat n, KnownNat m, Vector v a) => Vector v (m + n) a -> Vector v n a
+ Data.Vector.Generic.Sized: take :: forall v n m a. (KnownNat n, KnownNat m, Vector v a) => Vector v (n + m) a -> Vector v n a
- Data.Vector.Generic.Sized: take' :: forall v n m a. (KnownNat n, KnownNat m, Vector v a) => Proxy n -> Vector v (m + n) a -> Vector v n a
+ Data.Vector.Generic.Sized: take' :: forall v n m a p. (KnownNat n, KnownNat m, Vector v a) => p n -> Vector v (n + m) a -> Vector v n a
- Data.Vector.Generic.Sized: unfoldrN' :: forall v n a b. (KnownNat n, Vector v a) => Proxy n -> (b -> (a, b)) -> b -> Vector v n a
+ Data.Vector.Generic.Sized: unfoldrN' :: forall v n a b p. (KnownNat n, Vector v a) => p n -> (b -> (a, b)) -> b -> Vector v n a
- Data.Vector.Sized: cons :: forall n a. a -> Vector n a -> Vector (n + 1) a
+ Data.Vector.Sized: cons :: forall n a. a -> Vector n a -> Vector (1 + n) a
- Data.Vector.Sized: drop :: forall n m a. (KnownNat n, KnownNat m) => Vector (m + n) a -> Vector m a
+ Data.Vector.Sized: drop :: forall n m a. (KnownNat n, KnownNat m) => Vector (n + m) a -> Vector m a
- Data.Vector.Sized: drop' :: forall n m a. (KnownNat n, KnownNat m) => Proxy n -> Vector (m + n) a -> Vector m a
+ Data.Vector.Sized: drop' :: forall n m a p. (KnownNat n, KnownNat m) => p n -> Vector (n + m) a -> Vector m a
- Data.Vector.Sized: enumFromN' :: forall n a. (KnownNat n, Num a) => a -> Proxy n -> Vector n a
+ Data.Vector.Sized: enumFromN' :: forall n a p. (KnownNat n, Num a) => a -> p n -> Vector n a
- Data.Vector.Sized: enumFromStepN' :: forall n a. (KnownNat n, Num a) => a -> a -> Proxy n -> Vector n a
+ Data.Vector.Sized: enumFromStepN' :: forall n a p. (KnownNat n, Num a) => a -> a -> p n -> Vector n a
- Data.Vector.Sized: fold1M :: (Monad m, KnownNat n) => (a -> a -> m a) -> Vector (n + 1) a -> m a
+ Data.Vector.Sized: fold1M :: (Monad m, KnownNat n) => (a -> a -> m a) -> Vector (1 + n) a -> m a
- Data.Vector.Sized: foldl1 :: KnownNat n => (a -> a -> a) -> Vector (n + 1) a -> a
+ Data.Vector.Sized: foldl1 :: KnownNat n => (a -> a -> a) -> Vector (1 + n) a -> a
- Data.Vector.Sized: foldl1' :: KnownNat n => (a -> a -> a) -> Vector (n + 1) a -> a
+ Data.Vector.Sized: foldl1' :: KnownNat n => (a -> a -> a) -> Vector (1 + n) a -> a
- Data.Vector.Sized: fromListN' :: forall n a. KnownNat n => Proxy n -> [a] -> Maybe (Vector n a)
+ Data.Vector.Sized: fromListN' :: forall n a p. KnownNat n => p n -> [a] -> Maybe (Vector n a)
- Data.Vector.Sized: generate' :: forall n a. KnownNat n => Proxy n -> (Int -> a) -> Vector n a
+ Data.Vector.Sized: generate' :: forall n a p. KnownNat n => p n -> (Int -> a) -> Vector n a
- Data.Vector.Sized: generateM' :: forall n m a. (KnownNat n, Monad m) => Proxy n -> (Int -> m a) -> m (Vector n a)
+ Data.Vector.Sized: generateM' :: forall n m a p. (KnownNat n, Monad m) => p n -> (Int -> m a) -> m (Vector n a)
- Data.Vector.Sized: head :: forall n a. Vector (n + 1) a -> a
+ Data.Vector.Sized: head :: forall n a. Vector (1 + n) a -> a
- Data.Vector.Sized: headM :: forall n a m. (KnownNat n, Monad m) => Vector (n + 1) a -> m a
+ Data.Vector.Sized: headM :: forall n a m. (KnownNat n, Monad m) => Vector (1 + n) a -> m a
- Data.Vector.Sized: index' :: forall n m a. (KnownNat n, KnownNat m) => Vector ((n + m) + 1) a -> Proxy n -> a
+ Data.Vector.Sized: index' :: forall n m a p. (KnownNat n, KnownNat m) => Vector ((n + m) + 1) a -> p n -> a
- Data.Vector.Sized: indexM' :: forall n k a m. (KnownNat n, KnownNat k, Monad m) => Vector (n + k) a -> Proxy n -> m a
+ Data.Vector.Sized: indexM' :: forall n k a m p. (KnownNat n, KnownNat k, Monad m) => Vector (n + k) a -> p n -> m a
- Data.Vector.Sized: iterateN' :: forall n a. KnownNat n => Proxy n -> (a -> a) -> a -> Vector n a
+ Data.Vector.Sized: iterateN' :: forall n a p. KnownNat n => p n -> (a -> a) -> a -> Vector n a
- Data.Vector.Sized: replicate' :: forall n a. KnownNat n => Proxy n -> a -> Vector n a
+ Data.Vector.Sized: replicate' :: forall n a p. KnownNat n => p n -> a -> Vector n a
- Data.Vector.Sized: replicateM' :: forall n m a. (KnownNat n, Monad m) => Proxy n -> m a -> m (Vector n a)
+ Data.Vector.Sized: replicateM' :: forall n m a p. (KnownNat n, Monad m) => p n -> m a -> m (Vector n a)
- Data.Vector.Sized: slice :: forall i n a. (KnownNat i, KnownNat n) => Proxy i -> Vector (i + n) a -> Vector n a
+ Data.Vector.Sized: slice :: forall i n m a p. (KnownNat i, KnownNat n, KnownNat m) => p i -> Vector ((i + n) + m) a -> Vector n a
- Data.Vector.Sized: slice' :: forall i n a. (KnownNat i, KnownNat n) => Proxy i -> Proxy n -> Vector (i + n) a -> Vector n a
+ Data.Vector.Sized: slice' :: forall i n m a p. (KnownNat i, KnownNat n, KnownNat m) => p i -> p n -> Vector ((i + n) + m) a -> Vector n a
- Data.Vector.Sized: splitAt' :: forall n m a. (KnownNat n, KnownNat m) => Proxy n -> Vector (n + m) a -> (Vector n a, Vector m a)
+ Data.Vector.Sized: splitAt' :: forall n m a p. (KnownNat n, KnownNat m) => p n -> Vector (n + m) a -> (Vector n a, Vector m a)
- Data.Vector.Sized: tail :: forall n a. Vector (n + 1) a -> Vector n a
+ Data.Vector.Sized: tail :: forall n a. Vector (1 + n) a -> Vector n a
- Data.Vector.Sized: take :: forall n m a. (KnownNat n, KnownNat m) => Vector (m + n) a -> Vector n a
+ Data.Vector.Sized: take :: forall n m a. (KnownNat n, KnownNat m) => Vector (n + m) a -> Vector n a
- Data.Vector.Sized: take' :: forall n m a. (KnownNat n, KnownNat m) => Proxy n -> Vector (m + n) a -> Vector n a
+ Data.Vector.Sized: take' :: forall n m a p. (KnownNat n, KnownNat m) => p n -> Vector (n + m) a -> Vector n a
- Data.Vector.Sized: unfoldrN' :: forall n a b. KnownNat n => Proxy n -> (b -> (a, b)) -> b -> Vector n a
+ Data.Vector.Sized: unfoldrN' :: forall n a b p. KnownNat n => p n -> (b -> (a, b)) -> b -> Vector n a
- Data.Vector.Storable.Sized: cons :: forall n a. Storable a => a -> Vector n a -> Vector (n + 1) a
+ Data.Vector.Storable.Sized: cons :: forall n a. Storable a => a -> Vector n a -> Vector (1 + n) a
- Data.Vector.Storable.Sized: drop :: forall n m a. (KnownNat n, KnownNat m, Storable a) => Vector (m + n) a -> Vector m a
+ Data.Vector.Storable.Sized: drop :: forall n m a. (KnownNat n, KnownNat m, Storable a) => Vector (n + m) a -> Vector m a
- Data.Vector.Storable.Sized: drop' :: forall n m a. (KnownNat n, KnownNat m, Storable a) => Proxy n -> Vector (m + n) a -> Vector m a
+ Data.Vector.Storable.Sized: drop' :: forall n m a p. (KnownNat n, KnownNat m, Storable a) => p n -> Vector (n + m) a -> Vector m a
- Data.Vector.Storable.Sized: enumFromN' :: forall n a. (KnownNat n, Storable a, Num a) => a -> Proxy n -> Vector n a
+ Data.Vector.Storable.Sized: enumFromN' :: forall n a p. (KnownNat n, Storable a, Num a) => a -> p n -> Vector n a
- Data.Vector.Storable.Sized: enumFromStepN' :: forall n a. (KnownNat n, Storable a, Num a) => a -> a -> Proxy n -> Vector n a
+ Data.Vector.Storable.Sized: enumFromStepN' :: forall n a p. (KnownNat n, Storable a, Num a) => a -> a -> p n -> Vector n a
- Data.Vector.Storable.Sized: fold1M :: (Monad m, Storable a, KnownNat n) => (a -> a -> m a) -> Vector (n + 1) a -> m a
+ Data.Vector.Storable.Sized: fold1M :: (Monad m, Storable a, KnownNat n) => (a -> a -> m a) -> Vector (1 + n) a -> m a
- Data.Vector.Storable.Sized: foldl1 :: (Storable a, KnownNat n) => (a -> a -> a) -> Vector (n + 1) a -> a
+ Data.Vector.Storable.Sized: foldl1 :: (Storable a, KnownNat n) => (a -> a -> a) -> Vector (1 + n) a -> a
- Data.Vector.Storable.Sized: foldl1' :: (Storable a, KnownNat n) => (a -> a -> a) -> Vector (n + 1) a -> a
+ Data.Vector.Storable.Sized: foldl1' :: (Storable a, KnownNat n) => (a -> a -> a) -> Vector (1 + n) a -> a
- Data.Vector.Storable.Sized: fromListN' :: forall n a. (Storable a, KnownNat n) => Proxy n -> [a] -> Maybe (Vector n a)
+ Data.Vector.Storable.Sized: fromListN' :: forall n a p. (Storable a, KnownNat n) => p n -> [a] -> Maybe (Vector n a)
- Data.Vector.Storable.Sized: generate' :: forall n a. (KnownNat n, Storable a) => Proxy n -> (Int -> a) -> Vector n a
+ Data.Vector.Storable.Sized: generate' :: forall n a p. (KnownNat n, Storable a) => p n -> (Int -> a) -> Vector n a
- Data.Vector.Storable.Sized: generateM' :: forall n m a. (KnownNat n, Storable a, Monad m) => Proxy n -> (Int -> m a) -> m (Vector n a)
+ Data.Vector.Storable.Sized: generateM' :: forall n m a p. (KnownNat n, Storable a, Monad m) => p n -> (Int -> m a) -> m (Vector n a)
- Data.Vector.Storable.Sized: head :: forall n a. (Storable a) => Vector (n + 1) a -> a
+ Data.Vector.Storable.Sized: head :: forall n a. (Storable a) => Vector (1 + n) a -> a
- Data.Vector.Storable.Sized: headM :: forall n a m. (KnownNat n, Storable a, Monad m) => Vector (n + 1) a -> m a
+ Data.Vector.Storable.Sized: headM :: forall n a m. (KnownNat n, Storable a, Monad m) => Vector (1 + n) a -> m a
- Data.Vector.Storable.Sized: index' :: forall n m a. (KnownNat n, KnownNat m, Storable a) => Vector ((n + m) + 1) a -> Proxy n -> a
+ Data.Vector.Storable.Sized: index' :: forall n m a p. (KnownNat n, KnownNat m, Storable a) => Vector ((n + m) + 1) a -> p n -> a
- Data.Vector.Storable.Sized: indexM' :: forall n k a m. (KnownNat n, KnownNat k, Storable a, Monad m) => Vector (n + k) a -> Proxy n -> m a
+ Data.Vector.Storable.Sized: indexM' :: forall n k a m p. (KnownNat n, KnownNat k, Storable a, Monad m) => Vector (n + k) a -> p n -> m a
- Data.Vector.Storable.Sized: iterateN' :: forall n a. (KnownNat n, Storable a) => Proxy n -> (a -> a) -> a -> Vector n a
+ Data.Vector.Storable.Sized: iterateN' :: forall n a p. (KnownNat n, Storable a) => p n -> (a -> a) -> a -> Vector n a
- Data.Vector.Storable.Sized: replicate' :: forall n a. (KnownNat n, Storable a) => Proxy n -> a -> Vector n a
+ Data.Vector.Storable.Sized: replicate' :: forall n a p. (KnownNat n, Storable a) => p n -> a -> Vector n a
- Data.Vector.Storable.Sized: replicateM' :: forall n m a. (KnownNat n, Storable a, Monad m) => Proxy n -> m a -> m (Vector n a)
+ Data.Vector.Storable.Sized: replicateM' :: forall n m a p. (KnownNat n, Storable a, Monad m) => p n -> m a -> m (Vector n a)
- Data.Vector.Storable.Sized: slice :: forall i n a. (KnownNat i, KnownNat n, Storable a) => Proxy i -> Vector (i + n) a -> Vector n a
+ Data.Vector.Storable.Sized: slice :: forall i n m a p. (KnownNat i, KnownNat n, KnownNat m, Storable a) => p i -> Vector ((i + n) + m) a -> Vector n a
- Data.Vector.Storable.Sized: slice' :: forall i n a. (KnownNat i, KnownNat n, Storable a) => Proxy i -> Proxy n -> Vector (i + n) a -> Vector n a
+ Data.Vector.Storable.Sized: slice' :: forall i n m a p. (KnownNat i, KnownNat n, KnownNat m, Storable a) => p i -> p n -> Vector ((i + n) + m) a -> Vector n a
- Data.Vector.Storable.Sized: splitAt' :: forall n m a. (KnownNat n, KnownNat m, Storable a) => Proxy n -> Vector (n + m) a -> (Vector n a, Vector m a)
+ Data.Vector.Storable.Sized: splitAt' :: forall n m a p. (KnownNat n, KnownNat m, Storable a) => p n -> Vector (n + m) a -> (Vector n a, Vector m a)
- Data.Vector.Storable.Sized: tail :: forall n a. (Storable a) => Vector (n + 1) a -> Vector n a
+ Data.Vector.Storable.Sized: tail :: forall n a. (Storable a) => Vector (1 + n) a -> Vector n a
- Data.Vector.Storable.Sized: take :: forall n m a. (KnownNat n, KnownNat m, Storable a) => Vector (m + n) a -> Vector n a
+ Data.Vector.Storable.Sized: take :: forall n m a. (KnownNat n, KnownNat m, Storable a) => Vector (n + m) a -> Vector n a
- Data.Vector.Storable.Sized: take' :: forall n m a. (KnownNat n, KnownNat m, Storable a) => Proxy n -> Vector (m + n) a -> Vector n a
+ Data.Vector.Storable.Sized: take' :: forall n m a p. (KnownNat n, KnownNat m, Storable a) => p n -> Vector (n + m) a -> Vector n a
- Data.Vector.Storable.Sized: unfoldrN' :: forall n a b. (KnownNat n, Storable a) => Proxy n -> (b -> (a, b)) -> b -> Vector n a
+ Data.Vector.Storable.Sized: unfoldrN' :: forall n a b p. (KnownNat n, Storable a) => p n -> (b -> (a, b)) -> b -> Vector n a

Files

changelog.md view
@@ -1,5 +1,12 @@ # Change Log +## [0.6.1.0] - 2017-08-04+- Add lenses ix, _head and _last++## [0.6.0.0] - 2017-06-07+- Make ordering of additions in types be more consistent+- Make slice more general+ ## [0.5.1.0] - 2017-02-01 - Loosen upper bound on `vector` 
src/Data/Vector/Generic/Sized.hs view
@@ -100,6 +100,10 @@   , reverse   , backpermute   , unsafeBackpermute+    -- * Lenses+  , ix+  , _head+  , _last     -- * Elementwise operations     -- ** Indexing   , indexed@@ -303,8 +307,8 @@ {-# inline index #-}  -- | /O(1)/ Safe indexing using a 'Proxy'.-index' :: forall v n m a. (KnownNat n, KnownNat m, VG.Vector v a)-       => Vector v (n+m+1) a -> Proxy n -> a+index' :: forall v n m a p. (KnownNat n, KnownNat m, VG.Vector v a)+       => Vector v (n+m+1) a -> p n -> a index' (Vector v) p = v `VG.unsafeIndex` i   where i = fromInteger (natVal p) {-# inline index' #-}@@ -317,7 +321,7 @@  -- | /O(1)/ Yield the first element of a non-empty vector. head :: forall v n a. (VG.Vector v a)-     => Vector v (n+1) a -> a+     => Vector v (1+n) a -> a head (Vector v) = VG.unsafeHead v {-# inline head #-} @@ -327,6 +331,24 @@ last (Vector v) = VG.unsafeLast v {-# inline last #-} +-- | Lens to access (/O(1)/) and update (/O(n)/) an arbitrary element by its index.+ix :: forall v n a f. (KnownNat n, VG.Vector v a, Functor f)+   => Finite n -> (a -> f a) -> Vector v n a -> f (Vector v n a)+ix n f vector = (\x -> vector // [(fromInteger $ getFinite n, x)]) <$> f (index vector n)+{-# inline ix #-}++-- | Lens to access (/O(1)/) and update (/O(n)/) the first element of a non-empty vector.+_head :: forall v n a f. (KnownNat n, VG.Vector v a, Functor f)+      => (a -> f a) -> Vector v (1+n) a -> f (Vector v (1+n) a)+_head f vector = (\x -> cons x $ tail vector) <$> f (head vector)+{-# inline _head #-}++-- | Lens to access (/O(1)/) and update (/O(n)/) the last element of a non-empty vector.+_last :: forall v n a f. (KnownNat n, VG.Vector v a, Functor f)+       => (a -> f a) -> Vector v (n+1) a -> f (Vector v (n+1) a)+_last f vector = (\x -> snoc (init vector) x) <$> f (last vector)+{-# inline _last #-}+ -- | /O(1)/ Safe indexing in a monad. See the documentation for 'VG.indexM' for -- an explanation of why this is useful. indexM :: forall v n a m. (KnownNat n, VG.Vector v a, Monad m)@@ -336,8 +358,8 @@  -- | /O(1)/ Safe indexing in a monad using a 'Proxy'. See the documentation for -- 'VG.indexM' for an explanation of why this is useful.-indexM' :: forall v n k a m. (KnownNat n, KnownNat k, VG.Vector v a, Monad m)-      => Vector v (n+k) a -> Proxy n -> m a+indexM' :: forall v n k a m p. (KnownNat n, KnownNat k, VG.Vector v a, Monad m)+      => Vector v (n+k) a -> p n -> m a indexM' (Vector v) p = v `VG.indexM` i   where i = fromInteger (natVal p) {-# inline indexM' #-}@@ -352,7 +374,7 @@ -- | /O(1)/ Yield the first element of a non-empty vector in a monad. See the -- documentation for 'VG.indexM' for an explanation of why this is useful. headM :: forall v n a m. (KnownNat n, VG.Vector v a, Monad m)-      => Vector v (n+1) a -> m a+      => Vector v (1+n) a -> m a headM (Vector v) = VG.unsafeHeadM v {-# inline headM #-} @@ -365,9 +387,9 @@  -- | /O(1)/ Yield a slice of the vector without copying it with an inferred -- length argument.-slice :: forall v i n a. (KnownNat i, KnownNat n, VG.Vector v a)-      => Proxy i -- ^ starting index-      -> Vector v (i+n) a+slice :: forall v i n m a p. (KnownNat i, KnownNat n, KnownNat m, VG.Vector v a)+      => p i -- ^ starting index+      -> Vector v (i+n+m) a       -> Vector v n a slice start (Vector v) = Vector (VG.unsafeSlice i n v)   where i = fromInteger (natVal start)@@ -376,10 +398,11 @@  -- | /O(1)/ Yield a slice of the vector without copying it with an explicit -- length argument.-slice' :: forall v i n a. (KnownNat i, KnownNat n, VG.Vector v a)-       => Proxy i -- ^ starting index-       -> Proxy n -- ^ length-       -> Vector v (i+n) a+slice' :: forall v i n m a p+        . (KnownNat i, KnownNat n, KnownNat m, VG.Vector v a)+       => p i -- ^ starting index+       -> p n -- ^ length+       -> Vector v (i+n+m) a        -> Vector v n a slice' start _ = slice start {-# inline slice' #-}@@ -394,7 +417,7 @@ -- | /O(1)/ Yield all but the first element of a non-empty vector without -- copying. tail :: forall v n a. (VG.Vector v a)-     => Vector v (n+1) a -> Vector v n a+     => Vector v (1+n) a -> Vector v n a tail (Vector v) = Vector (VG.unsafeTail v) {-# inline tail #-} @@ -402,7 +425,7 @@ -- this many elements. The length of the resultant vector is inferred from the -- type. take :: forall v n m a. (KnownNat n, KnownNat m, VG.Vector v a)-     => Vector v (m+n) a -> Vector v n a+     => Vector v (n+m) a -> Vector v n a take (Vector v) = Vector (VG.unsafeTake i v)   where i = fromInteger (natVal (Proxy :: Proxy n)) {-# inline take #-}@@ -410,8 +433,8 @@ -- | /O(1)/ Yield the first n elements. The resultant vector always contains -- this many elements. The length of the resultant vector is given explicitly -- as a 'Proxy' argument.-take' :: forall v n m a. (KnownNat n, KnownNat m, VG.Vector v a)-      => Proxy n -> Vector v (m+n) a -> Vector v n a+take' :: forall v n m a p. (KnownNat n, KnownNat m, VG.Vector v a)+      => p n -> Vector v (n+m) a -> Vector v n a take' _ = take {-# inline take' #-} @@ -419,7 +442,7 @@ -- contain at least this many elements The length of the resultant vector is -- inferred from the type. drop :: forall v n m a. (KnownNat n, KnownNat m, VG.Vector v a)-     => Vector v (m+n) a -> Vector v m a+     => Vector v (n+m) a -> Vector v m a drop (Vector v) = Vector (VG.unsafeDrop i v)   where i = fromInteger (natVal (Proxy :: Proxy n)) {-# inline drop #-}@@ -427,8 +450,8 @@ -- | /O(1)/ Yield all but the the first n elements. The given vector must -- contain at least this many elements The length of the resultant vector is -- givel explicitly as a 'Proxy' argument.-drop' :: forall v n m a. (KnownNat n, KnownNat m, VG.Vector v a)-      => Proxy n -> Vector v (m+n) a -> Vector v m a+drop' :: forall v n m a p. (KnownNat n, KnownNat m, VG.Vector v a)+      => p n -> Vector v (n+m) a -> Vector v m a drop' _ = drop {-# inline drop' #-} @@ -444,8 +467,8 @@ -- | /O(1)/ Yield the first n elements paired with the remainder without -- copying.  The length of the first resultant vector is passed explicitly as a -- 'Proxy' argument.-splitAt' :: forall v n m a. (KnownNat n, KnownNat m, VG.Vector v a)-         => Proxy n -> Vector v (n+m) a -> (Vector v n a, Vector v m a)+splitAt' :: forall v n m a p. (KnownNat n, KnownNat m, VG.Vector v a)+         => p n -> Vector v (n+m) a -> (Vector v n a, Vector v m a) splitAt' _ = splitAt {-# inline splitAt' #-} @@ -479,8 +502,8 @@  -- | /O(n)/ Construct a vector with the same element in each position where the -- length is given explicitly as a 'Proxy' argument.-replicate' :: forall v n a. (KnownNat n, VG.Vector v a)-           => Proxy n -> a -> Vector v n a+replicate' :: forall v n a p. (KnownNat n, VG.Vector v a)+           => p n -> a -> Vector v n a replicate' _ = replicate {-# inline replicate' #-} @@ -494,8 +517,8 @@  -- | /O(n)/ construct a vector of the given length by applying the function to -- each index where the length is given explicitly as a 'Proxy' argument.-generate' :: forall v n a. (KnownNat n, VG.Vector v a)-          => Proxy n -> (Int -> a) -> Vector v n a+generate' :: forall v n a p. (KnownNat n, VG.Vector v a)+          => p n -> (Int -> a) -> Vector v n a generate' _ = generate {-# inline generate' #-} @@ -520,8 +543,8 @@  -- | /O(n)/ Apply function n times to value. Zeroth element is original value. -- The length is given explicitly as a 'Proxy' argument.-iterateN' :: forall v n a. (KnownNat n, VG.Vector v a)-          => Proxy n -> (a -> a) -> a -> Vector v n a+iterateN' :: forall v n a p. (KnownNat n, VG.Vector v a)+          => p n -> (a -> a) -> a -> Vector v n a iterateN' _ = iterateN {-# inline iterateN' #-} @@ -539,8 +562,8 @@  -- | /O(n)/ Execute the monadic action @n@ times and store the results in a -- vector where @n@ is given explicitly as a 'Proxy' argument.-replicateM' :: forall v n m a. (KnownNat n, VG.Vector v a, Monad m)-            => Proxy n -> m a -> m (Vector v n a)+replicateM' :: forall v n m a p. (KnownNat n, VG.Vector v a, Monad m)+            => p n -> m a -> m (Vector v n a) replicateM' _ = replicateM {-# inline replicateM' #-} @@ -554,8 +577,8 @@  -- | /O(n)/ Construct a vector of length @n@ by applying the monadic action to -- each index where n is given explicitly as a 'Proxy' argument.-generateM' :: forall v n m a. (KnownNat n, VG.Vector v a, Monad m)-           => Proxy n -> (Int -> m a) -> m (Vector v n a)+generateM' :: forall v n m a p. (KnownNat n, VG.Vector v a, Monad m)+           => p n -> (Int -> m a) -> m (Vector v n a) generateM' _ = generateM {-# inline generateM' #-} @@ -586,14 +609,14 @@ -- | /O(n)/ Construct a vector with exactly @n@ elements by repeatedly applying -- the generator function to the a seed. The length, @n@, is given explicitly -- as a 'Proxy' argument.-unfoldrN' :: forall v n a b. (KnownNat n, VG.Vector v a)-          => Proxy n -> (b -> (a, b)) -> b -> Vector v n a+unfoldrN' :: forall v n a b p. (KnownNat n, VG.Vector v a)+          => p n -> (b -> (a, b)) -> b -> Vector v n a unfoldrN' _ = unfoldrN {-# inline unfoldrN' #-}  -- -- ** Enumeration--- +--  -- | /O(n)/ Yield a vector of length @n@ containing the values @x@, @x+1@ -- etc. The length, @n@, is inferred from the type.@@ -605,8 +628,8 @@  -- | /O(n)/ Yield a vector of length @n@ containing the values @x@, @x+1@ -- etc. The length, @n@, is given explicitly as a 'Proxy' argument.-enumFromN' :: forall v n a. (KnownNat n, VG.Vector v a, Num a)-           => a -> Proxy n -> Vector v n a+enumFromN' :: forall v n a p. (KnownNat n, VG.Vector v a, Num a)+           => a -> p n -> Vector v n a enumFromN' a _ = enumFromN a {-# inline enumFromN' #-} @@ -620,8 +643,8 @@  -- | /O(n)/ Yield a vector of the given length containing the values @x@, @x+y@, -- @x+y+y@ etc. The length, @n@, is given explicitly as a 'Proxy' argument.-enumFromStepN' :: forall v n a. (KnownNat n, VG.Vector v a, Num a)-               => a -> a -> Proxy n -> Vector v n a+enumFromStepN' :: forall v n a p. (KnownNat n, VG.Vector v a, Num a)+               => a -> a -> p n -> Vector v n a enumFromStepN' a a' _ = enumFromStepN a a' {-# inline enumFromStepN' #-} @@ -631,7 +654,7 @@  -- | /O(n)/ Prepend an element. cons :: forall v n a. VG.Vector v a-     => a -> Vector v n a -> Vector v (n+1) a+     => a -> Vector v n a -> Vector v (1+n) a cons x (Vector xs) = Vector (VG.cons x xs) {-# inline cons #-} @@ -1208,7 +1231,7 @@ {-# inline foldl #-}  -- | /O(n)/ Left fold on non-empty vectors-foldl1 :: (VG.Vector v a, KnownNat n) => (a -> a -> a) -> Vector v (n+1) a -> a+foldl1 :: (VG.Vector v a, KnownNat n) => (a -> a -> a) -> Vector v (1+n) a -> a foldl1 f = VG.foldl1 f . fromSized {-# inline foldl1 #-} @@ -1218,7 +1241,7 @@ {-# inline foldl' #-}  -- | /O(n)/ Left fold on non-empty vectors with strict accumulator-foldl1' :: (VG.Vector v a, KnownNat n) => (a -> a -> a) -> Vector v (n+1) a -> a+foldl1' :: (VG.Vector v a, KnownNat n) => (a -> a -> a) -> Vector v (1+n) a -> a foldl1' f = VG.foldl1' f . fromSized {-# inline foldl1' #-} @@ -1358,7 +1381,7 @@  -- | /O(n)/ Monadic fold over non-empty vectors fold1M :: (Monad m, VG.Vector v a, KnownNat n)-       => (a -> a -> m a) -> Vector v (n+1) a -> m a+       => (a -> a -> m a) -> Vector v (1+n) a -> m a fold1M m = VG.fold1M m . fromSized {-# inline fold1M #-} @@ -1536,12 +1559,12 @@  -- | /O(n)/ Convert a list to a vector fromList :: (VG.Vector v a, KnownNat n) => [a] -> Maybe (Vector v n a)-fromList = toSized . VG.fromList +fromList = toSized . VG.fromList {-# inline fromList #-}  -- | /O(n)/ Convert the first @n@ elements of a list to a vector. The length of -- the resultant vector is inferred from the type.-fromListN :: forall v n a. (VG.Vector v a, KnownNat n) +fromListN :: forall v n a. (VG.Vector v a, KnownNat n)           => [a] -> Maybe (Vector v n a) fromListN = toSized . VG.fromListN i   where i = fromInteger (natVal (Proxy :: Proxy n))@@ -1549,8 +1572,8 @@  -- | /O(n)/ Convert the first @n@ elements of a list to a vector. The length of -- the resultant vector is given explicitly as a 'Proxy' argument.-fromListN' :: forall v n a. (VG.Vector v a, KnownNat n) -           => Proxy n -> [a] -> Maybe (Vector v n a)+fromListN' :: forall v n a p. (VG.Vector v a, KnownNat n)+           => p n -> [a] -> Maybe (Vector v n a) fromListN' _ = fromListN {-# inline fromListN' #-} @@ -1608,3 +1631,37 @@                  => (v a -> w b) -> Vector v n a -> Vector w n b withVectorUnsafe f (Vector v) = Vector (f v) {-# inline withVectorUnsafe #-}++instance (VG.Vector v a, Num a, KnownNat n) => Num (Vector v n a) where+    (+)         = zipWith (+)+    (-)         = zipWith (-)+    (*)         = zipWith (*)+    negate      = map negate+    abs         = map abs+    signum      = map signum+    fromInteger = replicate . fromInteger++instance (VG.Vector v a, Fractional a, KnownNat n) => Fractional (Vector v n a) where+    (/)          = zipWith (/)+    recip        = map recip+    fromRational = replicate . fromRational++instance (VG.Vector v a, Floating a, KnownNat n) => Floating (Vector v n a) where+    pi      = replicate pi+    exp     = map exp+    log     = map log+    sqrt    = map sqrt+    (**)    = zipWith (**)+    logBase = zipWith logBase+    sin     = map sin+    cos     = map cos+    tan     = map tan+    asin    = map asin+    acos    = map acos+    atan    = map atan+    sinh    = map sinh+    cosh    = map cosh+    tanh    = map tanh+    asinh   = map asinh+    acosh   = map acosh+    atanh   = map atanh
src/Data/Vector/Sized.hs view
@@ -1,11 +1,11 @@-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE DataKinds                  #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE FlexibleInstances          #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE KindSignatures #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE TypeOperators #-}-{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE KindSignatures             #-}+{-# LANGUAGE RankNTypes                 #-}+{-# LANGUAGE ScopedTypeVariables        #-}+{-# LANGUAGE TypeOperators              #-}  {-| This module re-exports the functionality in 'Data.Vector.Generic.Sized'@@ -97,6 +97,10 @@   , reverse   , backpermute   , unsafeBackpermute+  -- * Lenses+  , ix+  , _head+  , _last     -- * Elementwise operations     -- ** Indexing   , indexed@@ -263,8 +267,8 @@ {-# inline index #-}  -- | /O(1)/ Safe indexing using a 'Proxy'.-index' :: forall n m a. (KnownNat n, KnownNat m)-       => Vector (n+m+1) a -> Proxy n -> a+index' :: forall n m a p. (KnownNat n, KnownNat m)+       => Vector (n+m+1) a -> p n -> a index' = V.index' {-# inline index' #-} @@ -275,7 +279,7 @@ {-# inline unsafeIndex #-}  -- | /O(1)/ Yield the first element of a non-empty vector.-head :: forall n a. Vector (n+1) a -> a+head :: forall n a. Vector (1+n) a -> a head = V.head {-# inline head #-} @@ -284,6 +288,24 @@ last = V.last {-# inline last #-} +-- | Lens to access (/O(1)/) and update (/O(n)/) an arbitrary element by its index.+ix :: forall n a f. (KnownNat n, Functor f)+   => Finite n -> (a -> f a) -> Vector n a -> f (Vector n a)+ix = V.ix+{-# inline ix #-}++-- | Lens to access (/O(1)/) and update (/O(n)/) the first element of a non-empty vector.+_head :: forall n a f. (KnownNat n, Functor f)+   => (a -> f a) -> Vector (1+n) a -> f (Vector (1+n) a)+_head = V._head+{-# inline _head #-}++-- | Lens to access (/O(1)/) and update (/O(n)/) the last element of a non-empty vector.+_last :: forall n a f. (KnownNat n, Functor f)+      => (a -> f a) -> Vector (n+1) a -> f (Vector (n+1) a)+_last = V._last+{-# inline _last #-}+ -- | /O(1)/ Safe indexing in a monad. See the documentation for 'VG.indexM' for -- an explanation of why this is useful. indexM :: forall n a m. (KnownNat n, Monad m)@@ -293,8 +315,8 @@  -- | /O(1)/ Safe indexing in a monad using a 'Proxy'. See the documentation for -- 'VG.indexM' for an explanation of why this is useful.-indexM' :: forall n k a m. (KnownNat n, KnownNat k, Monad m)-      => Vector (n+k) a -> Proxy n -> m a+indexM' :: forall n k a m p. (KnownNat n, KnownNat k, Monad m)+      => Vector (n+k) a -> p n -> m a indexM' = V.indexM' {-# inline indexM' #-} @@ -308,7 +330,7 @@ -- | /O(1)/ Yield the first element of a non-empty vector in a monad. See the -- documentation for 'VG.indexM' for an explanation of why this is useful. headM :: forall n a m. (KnownNat n, Monad m)-      => Vector (n+1) a -> m a+      => Vector (1+n) a -> m a headM = V.headM {-# inline headM #-} @@ -321,19 +343,19 @@  -- | /O(1)/ Yield a slice of the vector without copying it with an inferred -- length argument.-slice :: forall i n a. (KnownNat i, KnownNat n)-      => Proxy i -- ^ starting index-      -> Vector (i+n) a+slice :: forall i n m a p. (KnownNat i, KnownNat n, KnownNat m)+      => p i -- ^ starting index+      -> Vector (i+n+m) a       -> Vector n a slice = V.slice {-# inline slice #-}  -- | /O(1)/ Yield a slice of the vector without copying it with an explicit -- length argument.-slice' :: forall i n a. (KnownNat i, KnownNat n)-       => Proxy i -- ^ starting index-       -> Proxy n -- ^ length-       -> Vector (i+n) a+slice' :: forall i n m a p. (KnownNat i, KnownNat n, KnownNat m)+       => p i -- ^ starting index+       -> p n -- ^ length+       -> Vector (i+n+m) a        -> Vector n a slice' = V.slice' {-# inline slice' #-}@@ -346,7 +368,7 @@  -- | /O(1)/ Yield all but the first element of a non-empty vector without -- copying.-tail :: forall n a. Vector (n+1) a -> Vector n a+tail :: forall n a. Vector (1+n) a -> Vector n a tail = V.tail {-# inline tail #-} @@ -354,15 +376,15 @@ -- this many elements. The length of the resultant vector is inferred from the -- type. take :: forall n m a. (KnownNat n, KnownNat m)-     => Vector (m+n) a -> Vector n a+     => Vector (n+m) a -> Vector n a take = V.take {-# inline take #-}  -- | /O(1)/ Yield the first n elements. The resultant vector always contains -- this many elements. The length of the resultant vector is given explicitly -- as a 'Proxy' argument.-take' :: forall n m a. (KnownNat n, KnownNat m)-      => Proxy n -> Vector (m+n) a -> Vector n a+take' :: forall n m a p. (KnownNat n, KnownNat m)+      => p n -> Vector (n+m) a -> Vector n a take' = V.take' {-# inline take' #-} @@ -370,15 +392,15 @@ -- contain at least this many elements The length of the resultant vector is -- inferred from the type. drop :: forall n m a. (KnownNat n, KnownNat m)-     => Vector (m+n) a -> Vector m a+     => Vector (n+m) a -> Vector m a drop = V.drop {-# inline drop #-}  -- | /O(1)/ Yield all but the the first n elements. The given vector must -- contain at least this many elements The length of the resultant vector is -- givel explicitly as a 'Proxy' argument.-drop' :: forall n m a. (KnownNat n, KnownNat m)-      => Proxy n -> Vector (m+n) a -> Vector m a+drop' :: forall n m a p. (KnownNat n, KnownNat m)+      => p n -> Vector (n+m) a -> Vector m a drop' = V.drop' {-# inline drop' #-} @@ -392,8 +414,8 @@ -- | /O(1)/ Yield the first n elements paired with the remainder without -- copying.  The length of the first resultant vector is passed explicitly as a -- 'Proxy' argument.-splitAt' :: forall n m a. (KnownNat n, KnownNat m)-         => Proxy n -> Vector (n+m) a -> (Vector n a, Vector m a)+splitAt' :: forall n m a p. (KnownNat n, KnownNat m)+         => p n -> Vector (n+m) a -> (Vector n a, Vector m a) splitAt' = V.splitAt' {-# inline splitAt' #-} @@ -424,8 +446,8 @@  -- | /O(n)/ Construct a vector with the same element in each position where the -- length is given explicitly as a 'Proxy' argument.-replicate' :: forall n a. KnownNat n-           => Proxy n -> a -> Vector n a+replicate' :: forall n a p. KnownNat n+           => p n -> a -> Vector n a replicate' = V.replicate' {-# inline replicate' #-} @@ -438,8 +460,8 @@  -- | /O(n)/ construct a vector of the given length by applying the function to -- each index where the length is given explicitly as a 'Proxy' argument.-generate' :: forall n a. KnownNat n-          => Proxy n -> (Int -> a) -> Vector n a+generate' :: forall n a p. KnownNat n+          => p n -> (Int -> a) -> Vector n a generate' = V.generate' {-# inline generate' #-} @@ -462,8 +484,8 @@  -- | /O(n)/ Apply function n times to value. Zeroth element is original value. -- The length is given explicitly as a 'Proxy' argument.-iterateN' :: forall n a. KnownNat n-          => Proxy n -> (a -> a) -> a -> Vector n a+iterateN' :: forall n a p. KnownNat n+          => p n -> (a -> a) -> a -> Vector n a iterateN' = V.iterateN' {-# inline iterateN' #-} @@ -480,8 +502,8 @@  -- | /O(n)/ Execute the monadic action @n@ times and store the results in a -- vector where @n@ is given explicitly as a 'Proxy' argument.-replicateM' :: forall n m a. (KnownNat n, Monad m)-            => Proxy n -> m a -> m (Vector n a)+replicateM' :: forall n m a p. (KnownNat n, Monad m)+            => p n -> m a -> m (Vector n a) replicateM' = V.replicateM' {-# inline replicateM' #-} @@ -504,8 +526,8 @@  -- | /O(n)/ Construct a vector of length @n@ by applying the monadic action to -- each index where n is given explicitly as a 'Proxy' argument.-generateM' :: forall n m a. (KnownNat n, Monad m)-           => Proxy n -> (Int -> m a) -> m (Vector n a)+generateM' :: forall n m a p. (KnownNat n, Monad m)+           => p n -> (Int -> m a) -> m (Vector n a) generateM' = V.generateM' {-# inline generateM' #-} @@ -524,14 +546,14 @@ -- | /O(n)/ Construct a vector with exactly @n@ elements by repeatedly applying -- the generator function to the a seed. The length, @n@, is given explicitly -- as a 'Proxy' argument.-unfoldrN' :: forall n a b. KnownNat n-          => Proxy n -> (b -> (a, b)) -> b -> Vector n a+unfoldrN' :: forall n a b p. KnownNat n+          => p n -> (b -> (a, b)) -> b -> Vector n a unfoldrN' = V.unfoldrN' {-# inline unfoldrN' #-}  -- -- ** Enumeration--- +--  -- | /O(n)/ Yield a vector of length @n@ containing the values @x@, @x+1@ -- etc. The length, @n@, is inferred from the type.@@ -542,8 +564,8 @@  -- | /O(n)/ Yield a vector of length @n@ containing the values @x@, @x+1@ -- etc. The length, @n@, is given explicitly as a 'Proxy' argument.-enumFromN' :: forall n a. (KnownNat n, Num a)-           => a -> Proxy n -> Vector n a+enumFromN' :: forall n a p. (KnownNat n, Num a)+           => a -> p n -> Vector n a enumFromN' = V.enumFromN' {-# inline enumFromN' #-} @@ -556,8 +578,8 @@  -- | /O(n)/ Yield a vector of the given length containing the values @x@, @x+y@, -- @x+y+y@ etc. The length, @n@, is given explicitly as a 'Proxy' argument.-enumFromStepN' :: forall n a. (KnownNat n, Num a)-               => a -> a -> Proxy n -> Vector n a+enumFromStepN' :: forall n a p. (KnownNat n, Num a)+               => a -> a -> p n -> Vector n a enumFromStepN' = V.enumFromStepN' {-# inline enumFromStepN' #-} @@ -566,7 +588,7 @@ --  -- | /O(n)/ Prepend an element.-cons :: forall n a. a -> Vector n a -> Vector (n+1) a+cons :: forall n a. a -> Vector n a -> Vector (1+n) a cons = V.cons {-# inline cons #-} @@ -862,7 +884,7 @@          -> Vector n c          -> Vector n d          -> Vector n e-zipWith4 = V.zipWith4 +zipWith4 = V.zipWith4 {-# inline zipWith4 #-}  zipWith5 :: (a -> b -> c -> d -> e -> f)@@ -1074,7 +1096,7 @@ {-# inline foldl #-}  -- | /O(n)/ Left fold on non-empty vectors-foldl1 :: KnownNat n => (a -> a -> a) -> Vector (n+1) a -> a+foldl1 :: KnownNat n => (a -> a -> a) -> Vector (1+n) a -> a foldl1 = V.foldl1 {-# inline foldl1 #-} @@ -1084,7 +1106,7 @@ {-# inline foldl' #-}  -- | /O(n)/ Left fold on non-empty vectors with strict accumulator-foldl1' :: KnownNat n => (a -> a -> a) -> Vector (n+1) a -> a+foldl1' :: KnownNat n => (a -> a -> a) -> Vector (1+n) a -> a foldl1' = V.foldl1' {-# inline foldl1' #-} @@ -1224,7 +1246,7 @@  -- | /O(n)/ Monadic fold over non-empty vectors fold1M :: (Monad m, KnownNat n)-       => (a -> a -> m a) -> Vector (n+1) a -> m a+       => (a -> a -> m a) -> Vector (1+n) a -> m a fold1M = V.fold1M {-# inline fold1M #-} @@ -1413,8 +1435,8 @@  -- | /O(n)/ Convert the first @n@ elements of a list to a vector. The length of -- the resultant vector is given explicitly as a 'Proxy' argument.-fromListN' :: forall n a. KnownNat n-           => Proxy n -> [a] -> Maybe (Vector n a)+fromListN' :: forall n a p. KnownNat n+           => p n -> [a] -> Maybe (Vector n a) fromListN' = V.fromListN' {-# inline fromListN' #-} 
src/Data/Vector/Storable/Sized.hs view
@@ -1,11 +1,10 @@-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE DataKinds           #-}+{-# LANGUAGE FlexibleContexts    #-}+{-# LANGUAGE FlexibleInstances   #-}+{-# LANGUAGE KindSignatures      #-}+{-# LANGUAGE RankNTypes          #-} {-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE TypeOperators #-}-{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE TypeOperators       #-}  {-| This module re-exports the functionality in 'Data.Vector.Generic.Sized'@@ -97,6 +96,10 @@   , reverse   , backpermute   , unsafeBackpermute+    -- * Lenses+  , ix+  , _head+  , _last     -- * Elementwise operations     -- ** Indexing   , indexed@@ -264,8 +267,8 @@ {-# inline index #-}  -- | /O(1)/ Safe indexing using a 'Proxy'.-index' :: forall n m a. (KnownNat n, KnownNat m, Storable a)-       => Vector (n+m+1) a -> Proxy n -> a+index' :: forall n m a p. (KnownNat n, KnownNat m, Storable a)+       => Vector (n+m+1) a -> p n -> a index' = V.index' {-# inline index' #-} @@ -277,7 +280,7 @@  -- | /O(1)/ Yield the first element of a non-empty vector. head :: forall n a. (Storable a)-     => Vector (n+1) a -> a+     => Vector (1+n) a -> a head = V.head {-# inline head #-} @@ -287,6 +290,25 @@ last = V.last {-# inline last #-} +-- | Lens to access (/O(1)/) and update (/O(n)/) an arbitrary element by its index.+ix :: forall n a f. (KnownNat n, Storable a, Functor f)+   => Finite n -> (a -> f a) -> Vector n a -> f (Vector n a)+ix = V.ix+{-# inline ix #-}++-- | Lens to access (/O(1)/) and update (/O(n)/) the first element of a non-empty vector.+_head :: forall n a f. (KnownNat n, Storable a, Functor f)+      => (a -> f a) -> Vector (1+n) a -> f (Vector (1+n) a)+_head = V._head+{-# inline _head #-}++-- | Lens to access (/O(1)/) and update (/O(n)/) the last element of a non-empty vector.+_last :: forall n a f. (KnownNat n, Storable a, Functor f)+       => (a -> f a) -> Vector (n+1) a -> f (Vector (n+1) a)+_last = V._last+{-# inline _last #-}++ -- | /O(1)/ Safe indexing in a monad. See the documentation for 'VG.indexM' for -- an explanation of why this is useful. indexM :: forall n a m. (KnownNat n, Storable a, Monad m)@@ -296,8 +318,8 @@  -- | /O(1)/ Safe indexing in a monad using a 'Proxy'. See the documentation for -- 'VG.indexM' for an explanation of why this is useful.-indexM' :: forall n k a m. (KnownNat n, KnownNat k, Storable a, Monad m)-      => Vector (n+k) a -> Proxy n -> m a+indexM' :: forall n k a m p. (KnownNat n, KnownNat k, Storable a, Monad m)+      => Vector (n+k) a -> p n -> m a indexM' = V.indexM' {-# inline indexM' #-} @@ -311,7 +333,7 @@ -- | /O(1)/ Yield the first element of a non-empty vector in a monad. See the -- documentation for 'VG.indexM' for an explanation of why this is useful. headM :: forall n a m. (KnownNat n, Storable a, Monad m)-      => Vector (n+1) a -> m a+      => Vector (1+n) a -> m a headM = V.headM {-# inline headM #-} @@ -324,19 +346,19 @@  -- | /O(1)/ Yield a slice of the vector without copying it with an inferred -- length argument.-slice :: forall i n a. (KnownNat i, KnownNat n, Storable a)-      => Proxy i -- ^ starting index-      -> Vector (i+n) a+slice :: forall i n m a p. (KnownNat i, KnownNat n, KnownNat m, Storable a)+      => p i -- ^ starting index+      -> Vector (i+n+m) a       -> Vector n a slice = V.slice {-# inline slice #-}  -- | /O(1)/ Yield a slice of the vector without copying it with an explicit -- length argument.-slice' :: forall i n a. (KnownNat i, KnownNat n, Storable a)-       => Proxy i -- ^ starting index-       -> Proxy n -- ^ length-       -> Vector (i+n) a+slice' :: forall i n m a p. (KnownNat i, KnownNat n, KnownNat m, Storable a)+       => p i -- ^ starting index+       -> p n -- ^ length+       -> Vector (i+n+m) a        -> Vector n a slice' = V.slice' {-# inline slice' #-}@@ -351,7 +373,7 @@ -- | /O(1)/ Yield all but the first element of a non-empty vector without -- copying. tail :: forall n a. (Storable a)-     => Vector (n+1) a -> Vector n a+     => Vector (1+n) a -> Vector n a tail = V.tail {-# inline tail #-} @@ -359,15 +381,15 @@ -- this many elements. The length of the resultant vector is inferred from the -- type. take :: forall n m a. (KnownNat n, KnownNat m, Storable a)-     => Vector (m+n) a -> Vector n a+     => Vector (n+m) a -> Vector n a take = V.take {-# inline take #-}  -- | /O(1)/ Yield the first n elements. The resultant vector always contains -- this many elements. The length of the resultant vector is given explicitly -- as a 'Proxy' argument.-take' :: forall n m a. (KnownNat n, KnownNat m, Storable a)-      => Proxy n -> Vector (m+n) a -> Vector n a+take' :: forall n m a p. (KnownNat n, KnownNat m, Storable a)+      => p n -> Vector (n+m) a -> Vector n a take' = V.take' {-# inline take' #-} @@ -375,15 +397,15 @@ -- contain at least this many elements The length of the resultant vector is -- inferred from the type. drop :: forall n m a. (KnownNat n, KnownNat m, Storable a)-     => Vector (m+n) a -> Vector m a+     => Vector (n+m) a -> Vector m a drop = V.drop {-# inline drop #-}  -- | /O(1)/ Yield all but the the first n elements. The given vector must -- contain at least this many elements The length of the resultant vector is -- givel explicitly as a 'Proxy' argument.-drop' :: forall n m a. (KnownNat n, KnownNat m, Storable a)-      => Proxy n -> Vector (m+n) a -> Vector m a+drop' :: forall n m a p. (KnownNat n, KnownNat m, Storable a)+      => p n -> Vector (n+m) a -> Vector m a drop' = V.drop' {-# inline drop' #-} @@ -397,8 +419,8 @@ -- | /O(1)/ Yield the first n elements paired with the remainder without -- copying.  The length of the first resultant vector is passed explicitly as a -- 'Proxy' argument.-splitAt' :: forall n m a. (KnownNat n, KnownNat m, Storable a)-         => Proxy n -> Vector (n+m) a -> (Vector n a, Vector m a)+splitAt' :: forall n m a p. (KnownNat n, KnownNat m, Storable a)+         => p n -> Vector (n+m) a -> (Vector n a, Vector m a) splitAt' = V.splitAt' {-# inline splitAt' #-} @@ -431,8 +453,8 @@  -- | /O(n)/ Construct a vector with the same element in each position where the -- length is given explicitly as a 'Proxy' argument.-replicate' :: forall n a. (KnownNat n, Storable a)-           => Proxy n -> a -> Vector n a+replicate' :: forall n a p. (KnownNat n, Storable a)+           => p n -> a -> Vector n a replicate' = V.replicate' {-# inline replicate' #-} @@ -445,8 +467,8 @@  -- | /O(n)/ construct a vector of the given length by applying the function to -- each index where the length is given explicitly as a 'Proxy' argument.-generate' :: forall n a. (KnownNat n, Storable a)-          => Proxy n -> (Int -> a) -> Vector n a+generate' :: forall n a p. (KnownNat n, Storable a)+          => p n -> (Int -> a) -> Vector n a generate' = V.generate' {-# inline generate' #-} @@ -469,8 +491,8 @@  -- | /O(n)/ Apply function n times to value. Zeroth element is original value. -- The length is given explicitly as a 'Proxy' argument.-iterateN' :: forall n a. (KnownNat n, Storable a)-          => Proxy n -> (a -> a) -> a -> Vector n a+iterateN' :: forall n a p. (KnownNat n, Storable a)+          => p n -> (a -> a) -> a -> Vector n a iterateN' = V.iterateN' {-# inline iterateN' #-} @@ -487,8 +509,8 @@  -- | /O(n)/ Execute the monadic action @n@ times and store the results in a -- vector where @n@ is given explicitly as a 'Proxy' argument.-replicateM' :: forall n m a. (KnownNat n, Storable a, Monad m)-            => Proxy n -> m a -> m (Vector n a)+replicateM' :: forall n m a p. (KnownNat n, Storable a, Monad m)+            => p n -> m a -> m (Vector n a) replicateM' = V.replicateM' {-# inline replicateM' #-} @@ -501,8 +523,8 @@  -- | /O(n)/ Construct a vector of length @n@ by applying the monadic action to -- each index where n is given explicitly as a 'Proxy' argument.-generateM' :: forall n m a. (KnownNat n, Storable a, Monad m)-           => Proxy n -> (Int -> m a) -> m (Vector n a)+generateM' :: forall n m a p. (KnownNat n, Storable a, Monad m)+           => p n -> (Int -> m a) -> m (Vector n a) generateM' = V.generateM' {-# inline generateM' #-} @@ -531,14 +553,14 @@ -- | /O(n)/ Construct a vector with exactly @n@ elements by repeatedly applying -- the generator function to the a seed. The length, @n@, is given explicitly -- as a 'Proxy' argument.-unfoldrN' :: forall n a b. (KnownNat n, Storable a)-          => Proxy n -> (b -> (a, b)) -> b -> Vector n a+unfoldrN' :: forall n a b p. (KnownNat n, Storable a)+          => p n -> (b -> (a, b)) -> b -> Vector n a unfoldrN' = V.unfoldrN' {-# inline unfoldrN' #-}  -- -- ** Enumeration--- +--  -- | /O(n)/ Yield a vector of length @n@ containing the values @x@, @x+1@ -- etc. The length, @n@, is inferred from the type.@@ -549,8 +571,8 @@  -- | /O(n)/ Yield a vector of length @n@ containing the values @x@, @x+1@ -- etc. The length, @n@, is given explicitly as a 'Proxy' argument.-enumFromN' :: forall n a. (KnownNat n, Storable a, Num a)-           => a -> Proxy n -> Vector n a+enumFromN' :: forall n a p. (KnownNat n, Storable a, Num a)+           => a -> p n -> Vector n a enumFromN' = V.enumFromN' {-# inline enumFromN' #-} @@ -563,8 +585,8 @@  -- | /O(n)/ Yield a vector of the given length containing the values @x@, @x+y@, -- @x+y+y@ etc. The length, @n@, is given explicitly as a 'Proxy' argument.-enumFromStepN' :: forall n a. (KnownNat n, Storable a, Num a)-               => a -> a -> Proxy n -> Vector n a+enumFromStepN' :: forall n a p. (KnownNat n, Storable a, Num a)+               => a -> a -> p n -> Vector n a enumFromStepN' = V.enumFromStepN' {-# inline enumFromStepN' #-} @@ -574,7 +596,7 @@  -- | /O(n)/ Prepend an element. cons :: forall n a. Storable a-     => a -> Vector n a -> Vector (n+1) a+     => a -> Vector n a -> Vector (1+n) a cons = V.cons {-# inline cons #-} @@ -896,7 +918,7 @@          -> Vector n c          -> Vector n d          -> Vector n e-zipWith4 = V.zipWith4 +zipWith4 = V.zipWith4 {-# inline zipWith4 #-}  zipWith5 :: (Storable a,Storable b,Storable c,Storable d,Storable e,Storable f)@@ -1128,7 +1150,7 @@ {-# inline foldl #-}  -- | /O(n)/ Left fold on non-empty vectors-foldl1 :: (Storable a, KnownNat n) => (a -> a -> a) -> Vector (n+1) a -> a+foldl1 :: (Storable a, KnownNat n) => (a -> a -> a) -> Vector (1+n) a -> a foldl1 = V.foldl1 {-# inline foldl1 #-} @@ -1138,7 +1160,7 @@ {-# inline foldl' #-}  -- | /O(n)/ Left fold on non-empty vectors with strict accumulator-foldl1' :: (Storable a, KnownNat n) => (a -> a -> a) -> Vector (n+1) a -> a+foldl1' :: (Storable a, KnownNat n) => (a -> a -> a) -> Vector (1+n) a -> a foldl1' = V.foldl1' {-# inline foldl1' #-} @@ -1278,7 +1300,7 @@  -- | /O(n)/ Monadic fold over non-empty vectors fold1M :: (Monad m, Storable a, KnownNat n)-       => (a -> a -> m a) -> Vector (n+1) a -> m a+       => (a -> a -> m a) -> Vector (1+n) a -> m a fold1M = V.fold1M {-# inline fold1M #-} @@ -1468,8 +1490,8 @@  -- | /O(n)/ Convert the first @n@ elements of a list to a vector. The length of -- the resultant vector is given explicitly as a 'Proxy' argument.-fromListN' :: forall n a. (Storable a, KnownNat n)-           => Proxy n -> [a] -> Maybe (Vector n a)+fromListN' :: forall n a p. (Storable a, KnownNat n)+           => p n -> [a] -> Maybe (Vector n a) fromListN' = V.fromListN' {-# inline fromListN' #-} 
vector-sized.cabal view
@@ -1,5 +1,5 @@ name:                vector-sized-version:             0.5.1.0+version:             0.6.1.0 synopsis:            Size tagged vectors description:         Please see README.md homepage:            http://github.com/expipiplus1/vector-sized#readme