Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
This module provides the functionality to make length-parametrized types
from existing CFreeMonoid
sequential types.
Most of the complexity of operations for Sized f n a
are the same as
original operations for f
. For example, !!
is O(1) for
Sized Vector n a
but O(i) for Sized [] n a
.
This module also provides powerful view types and pattern synonyms to inspect the sized sequence. See Views and Patterns for more detail.
Synopsis
- data Sized (f :: Type -> Type) (n :: Nat) a
- data SomeSized f a where
- class Dom f a => DomC f a
- length :: forall f (n :: Nat) a. (Dom f a, KnownNat n) => Sized f n a -> Int
- sLength :: forall f (n :: Nat) a. (Dom f a, KnownNat n) => Sized f n a -> SNat n
- null :: forall f (n :: Nat) a. (CFoldable f, Dom f a) => Sized f n a -> Bool
- (!!) :: forall f (m :: Nat) a. (CFoldable f, Dom f a, 1 <= m) => Sized f m a -> Int -> a
- (%!!) :: forall f (n :: Nat) c. (CFoldable f, Dom f c) => Sized f n c -> Ordinal n -> c
- index :: forall f (m :: Nat) a. (CFoldable f, Dom f a, 1 <= m) => Int -> Sized f m a -> a
- sIndex :: forall f (n :: Nat) c. (CFoldable f, Dom f c) => Ordinal n -> Sized f n c -> c
- head :: forall f (n :: Nat) a. (CFoldable f, Dom f a, 0 < n) => Sized f n a -> a
- last :: forall f (n :: Nat) a. (0 < n, CFoldable f, Dom f a) => Sized f n a -> a
- uncons :: forall f (n :: Nat) a. (KnownNat n, CFreeMonoid f, Dom f a, 1 <= n) => Sized f n a -> Uncons f n a
- uncons' :: forall f (n :: Nat) a proxy. (KnownNat n, CFreeMonoid f, Dom f a) => proxy n -> Sized f (Succ n) a -> Uncons f (Succ n) a
- data Uncons f (n :: Nat) a where
- unsnoc :: forall f (n :: Nat) a. (KnownNat n, CFreeMonoid f, Dom f a, 0 < n) => Sized f n a -> Unsnoc f n a
- unsnoc' :: forall f (n :: Nat) a proxy. (KnownNat n, CFreeMonoid f, Dom f a) => proxy n -> Sized f (Succ n) a -> Unsnoc f (Succ n) a
- data Unsnoc f n a where
- tail :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => Sized f (1 + n) a -> Sized f n a
- init :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => Sized f (n + 1) a -> Sized f n a
- take :: forall (n :: Nat) f (m :: Nat) a. (CFreeMonoid f, Dom f a, n <= m) => SNat n -> Sized f m a -> Sized f n a
- takeAtMost :: forall (n :: Nat) f m a. (CFreeMonoid f, Dom f a) => SNat n -> Sized f m a -> Sized f (Min n m) a
- drop :: forall (n :: Nat) f (m :: Nat) a. (CFreeMonoid f, Dom f a, n <= m) => SNat n -> Sized f m a -> Sized f (m - n) a
- splitAt :: forall (n :: Nat) f m a. (CFreeMonoid f, Dom f a, n <= m) => SNat n -> Sized f m a -> (Sized f n a, Sized f (m -. n) a)
- splitAtMost :: forall (n :: Nat) f (m :: Nat) a. (CFreeMonoid f, Dom f a) => SNat n -> Sized f m a -> (Sized f (Min n m) a, Sized f (m -. n) a)
- empty :: forall f a. (Monoid (f a), Dom f a) => Sized f 0 a
- singleton :: forall f a. (CPointed f, Dom f a) => a -> Sized f 1 a
- toSomeSized :: forall f a. (Dom f a, CFoldable f) => f a -> SomeSized f a
- replicate :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => SNat n -> a -> Sized f n a
- replicate' :: forall f (n :: Nat) a. (KnownNat (n :: Nat), CFreeMonoid f, Dom f a) => a -> Sized f n a
- generate :: forall f (n :: Nat) (a :: Type). (CFreeMonoid f, Dom f a) => SNat n -> (Ordinal n -> a) -> Sized f n a
- generate' :: forall f (n :: Nat) (a :: Type). (KnownNat n, CFreeMonoid f, Dom f a) => (Ordinal n -> a) -> Sized f n a
- cons :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => a -> Sized f n a -> Sized f (1 + n) a
- (<|) :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => a -> Sized f n a -> Sized f (1 + n) a
- snoc :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => Sized f n a -> a -> Sized f (n + 1) a
- (|>) :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => Sized f n a -> a -> Sized f (n + 1) a
- append :: forall f (n :: Nat) (m :: Nat) a. (CFreeMonoid f, Dom f a) => Sized f n a -> Sized f m a -> Sized f (n + m) a
- (++) :: forall f (n :: Nat) (m :: Nat) a. (CFreeMonoid f, Dom f a) => Sized f n a -> Sized f m a -> Sized f (n + m) a
- concat :: forall f' (m :: Nat) f (n :: Nat) a. (CFreeMonoid f, CFunctor f', CFoldable f', Dom f a, Dom f' (f a), Dom f' (Sized f n a)) => Sized f' m (Sized f n a) -> Sized f (m * n) a
- zip :: forall f (n :: Nat) a (m :: Nat) b. (Dom f a, CZip f, Dom f b, Dom f (a, b)) => Sized f n a -> Sized f m b -> Sized f (Min n m) (a, b)
- zipSame :: forall f (n :: Nat) a b. (Dom f a, CZip f, Dom f b, Dom f (a, b)) => Sized f n a -> Sized f n b -> Sized f n (a, b)
- zipWith :: forall f (n :: Nat) a (m :: Nat) b c. (Dom f a, CZip f, Dom f b, CFreeMonoid f, Dom f c) => (a -> b -> c) -> Sized f n a -> Sized f m b -> Sized f (Min n m) c
- zipWithSame :: forall f (n :: Nat) a b c. (Dom f a, CZip f, Dom f b, CFreeMonoid f, Dom f c) => (a -> b -> c) -> Sized f n a -> Sized f n b -> Sized f n c
- unzip :: forall f (n :: Nat) a b. (CUnzip f, Dom f a, Dom f b, Dom f (a, b)) => Sized f n (a, b) -> (Sized f n a, Sized f n b)
- unzipWith :: forall f (n :: Nat) a b c. (CUnzip f, Dom f a, Dom f b, Dom f c) => (a -> (b, c)) -> Sized f n a -> (Sized f n b, Sized f n c)
- map :: forall f (n :: Nat) a b. (CFreeMonoid f, Dom f a, Dom f b) => (a -> b) -> Sized f n a -> Sized f n b
- reverse :: forall f (n :: Nat) a. (Dom f a, CFreeMonoid f) => Sized f n a -> Sized f n a
- intersperse :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => a -> Sized f n a -> Sized f ((2 * n) -. 1) a
- nub :: forall f (n :: Nat) a. (Dom f a, Eq a, CFreeMonoid f) => Sized f n a -> SomeSized f a
- sort :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a, Ord a) => Sized f n a -> Sized f n a
- sortBy :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => (a -> a -> Ordering) -> Sized f n a -> Sized f n a
- insert :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a, Ord a) => a -> Sized f n a -> Sized f (Succ n) a
- insertBy :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => (a -> a -> Ordering) -> a -> Sized f n a -> Sized f (Succ n) a
- toList :: forall f (n :: Nat) a. (CFoldable f, Dom f a) => Sized f n a -> [a]
- fromList :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => SNat n -> [a] -> Maybe (Sized f n a)
- fromList' :: forall f (n :: Nat) a. (Dom f a, CFreeMonoid f, KnownNat n) => [a] -> Maybe (Sized f n a)
- unsafeFromList :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => SNat n -> [a] -> Sized f n a
- unsafeFromList' :: forall f (n :: Nat) a. (KnownNat n, CFreeMonoid f, Dom f a) => [a] -> Sized f n a
- fromListWithDefault :: forall f (n :: Nat) a. (Dom f a, CFreeMonoid f) => SNat n -> a -> [a] -> Sized f n a
- fromListWithDefault' :: forall f (n :: Nat) a. (KnownNat n, CFreeMonoid f, Dom f a) => a -> [a] -> Sized f n a
- unsized :: forall f (n :: Nat) a. Sized f n a -> f a
- toSized :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => SNat (n :: Nat) -> f a -> Maybe (Sized f n a)
- toSized' :: forall f (n :: Nat) a. (Dom f a, CFreeMonoid f, KnownNat n) => f a -> Maybe (Sized f n a)
- unsafeToSized :: forall f (n :: Nat) a. SNat n -> f a -> Sized f n a
- unsafeToSized' :: forall f (n :: Nat) a. (KnownNat n, Dom f a) => f a -> Sized f n a
- toSizedWithDefault :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => SNat (n :: Nat) -> a -> f a -> Sized f n a
- toSizedWithDefault' :: forall f (n :: Nat) a. (KnownNat n, CFreeMonoid f, Dom f a) => a -> f a -> Sized f n a
- data Partitioned f n a where
- Partitioned :: Dom f a => SNat n -> Sized f n a -> SNat m -> Sized f m a -> Partitioned f (n + m) a
- takeWhile :: forall f (n :: Nat) a. (Dom f a, CFreeMonoid f) => (a -> Bool) -> Sized f n a -> SomeSized f a
- dropWhile :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => (a -> Bool) -> Sized f n a -> SomeSized f a
- span :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => (a -> Bool) -> Sized f n a -> Partitioned f n a
- break :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => (a -> Bool) -> Sized f n a -> Partitioned f n a
- partition :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => (a -> Bool) -> Sized f n a -> Partitioned f n a
- elem :: forall f (n :: Nat) a. (CFoldable f, Dom f a, Eq a) => a -> Sized f n a -> Bool
- notElem :: forall f (n :: Nat) a. (CFoldable f, Dom f a, Eq a) => a -> Sized f n a -> Bool
- find :: forall f (n :: Nat) a. (CFoldable f, Dom f a) => (a -> Bool) -> Sized f n a -> Maybe a
- findIndex :: forall f (n :: Nat) a. (CFoldable f, Dom f a) => (a -> Bool) -> Sized f n a -> Maybe Int
- sFindIndex :: forall f (n :: Nat) a. (KnownNat (n :: Nat), CFoldable f, Dom f a) => (a -> Bool) -> Sized f n a -> Maybe (Ordinal n)
- findIndices :: forall f (n :: Nat) a. (CFoldable f, Dom f a) => (a -> Bool) -> Sized f n a -> [Int]
- sFindIndices :: forall f (n :: Nat) a. (CFoldable f, Dom f a, KnownNat (n :: Nat)) => (a -> Bool) -> Sized f n a -> [Ordinal n]
- elemIndex :: forall f (n :: Nat) a. (CFoldable f, Eq a, Dom f a) => a -> Sized f n a -> Maybe Int
- sElemIndex :: forall f (n :: Nat) a. (KnownNat n, CFoldable f, Dom f a, Eq a) => a -> Sized f n a -> Maybe (Ordinal n)
- sUnsafeElemIndex :: forall f (n :: Nat) a. (KnownNat n, CFoldable f, Dom f a, Eq a) => a -> Sized f n a -> Maybe (Ordinal n)
- elemIndices :: forall f (n :: Nat) a. (CFoldable f, Dom f a, Eq a) => a -> Sized f n a -> [Int]
- sElemIndices :: forall f (n :: Nat) a. (CFoldable f, KnownNat (n :: Nat), Dom f a, Eq a) => a -> Sized f n a -> [Ordinal n]
- viewCons :: forall f (n :: Nat) a. (KnownNat n, CFreeMonoid f, Dom f a) => Sized f n a -> ConsView f n a
- data ConsView f n a where
- viewSnoc :: forall f (n :: Nat) a. (KnownNat n, CFreeMonoid f, Dom f a) => Sized f n a -> SnocView f n a
- data SnocView f n a where
- pattern Nil :: forall f (n :: Nat) a. (KnownNat n, CFreeMonoid f, Dom f a) => n ~ 0 => Sized f n a
- pattern (:<) :: forall (f :: Type -> Type) a (n :: Nat). (Dom f a, KnownNat n, CFreeMonoid f) => forall (n1 :: Nat). (n ~ (1 + n1), KnownNat n1) => a -> Sized f n1 a -> Sized f n a
- pattern (:>) :: forall (f :: Type -> Type) a (n :: Nat). (Dom f a, KnownNat n, CFreeMonoid f) => forall (n1 :: Nat). (n ~ (n1 + 1), KnownNat n1) => Sized f n1 a -> a -> Sized f n a
Main Data-types
data Sized (f :: Type -> Type) (n :: Nat) a Source #
Sized
wraps a sequential type f
and makes length-parametrized version.
Here, f
must be the instance of CFreeMonoid
(f a) a for all
a@.
Since 0.2.0.0
Instances
(Integral i, FoldableWithIndex i f, KnownNat n) => FoldableWithIndex (Ordinal n) (Sized f n) Source # | Since 0.4.0.0 |
Defined in Data.Sized.Internal ifoldMap :: Monoid m => (Ordinal n -> a -> m) -> Sized f n a -> m # ifoldMap' :: Monoid m => (Ordinal n -> a -> m) -> Sized f n a -> m # ifoldr :: (Ordinal n -> a -> b -> b) -> b -> Sized f n a -> b # ifoldl :: (Ordinal n -> b -> a -> b) -> b -> Sized f n a -> b # ifoldr' :: (Ordinal n -> a -> b -> b) -> b -> Sized f n a -> b # ifoldl' :: (Ordinal n -> b -> a -> b) -> b -> Sized f n a -> b # | |
(Integral i, FunctorWithIndex i f, KnownNat n) => FunctorWithIndex (Ordinal n) (Sized f n) Source # | Since 0.2.0.0 |
(Integral i, TraversableWithIndex i f, KnownNat n) => TraversableWithIndex (Ordinal n) (Sized f n) Source # | Since 0.2.0.0 |
Defined in Data.Sized.Internal | |
Foldable f => Foldable (Sized f n) Source # | |
Defined in Data.Sized.Internal fold :: Monoid m => Sized f n m -> m # foldMap :: Monoid m => (a -> m) -> Sized f n a -> m # foldMap' :: Monoid m => (a -> m) -> Sized f n a -> m # foldr :: (a -> b -> b) -> b -> Sized f n a -> b # foldr' :: (a -> b -> b) -> b -> Sized f n a -> b # foldl :: (b -> a -> b) -> b -> Sized f n a -> b # foldl' :: (b -> a -> b) -> b -> Sized f n a -> b # foldr1 :: (a -> a -> a) -> Sized f n a -> a # foldl1 :: (a -> a -> a) -> Sized f n a -> a # toList :: Sized f n a -> [a] # length :: Sized f n a -> Int # elem :: Eq a => a -> Sized f n a -> Bool # maximum :: Ord a => Sized f n a -> a # minimum :: Ord a => Sized f n a -> a # | |
Traversable f => Traversable (Sized f n) Source # | |
Defined in Data.Sized.Internal | |
(Functor f, CFreeMonoid f, CZip f, KnownNat n, forall a. DomC f a) => Applicative (Sized f n) Source # | Applicative instance, generalizing |
Functor f => Functor (Sized f n) Source # | |
(CFreeMonoid f, CZip f) => CApplicative (Sized f n) Source # | |
Defined in Data.Sized pair :: (Dom (Sized f n) a, Dom (Sized f n) b, Dom (Sized f n) (a, b)) => Sized f n a -> Sized f n b -> Sized f n (a, b) # (<.>) :: (Dom (Sized f n) a, Dom (Sized f n) b, Dom (Sized f n) (a -> b)) => Sized f n (a -> b) -> Sized f n a -> Sized f n b # (.>) :: (Dom (Sized f n) a, Dom (Sized f n) b) => Sized f n a -> Sized f n b -> Sized f n b # (<.) :: (Dom (Sized f n) a, Dom (Sized f n) b) => Sized f n a -> Sized f n b -> Sized f n a # | |
CFoldable f => CFoldable (Sized f n) Source # | |
Defined in Data.Sized.Internal cfoldMap :: (Dom (Sized f n) a, Monoid w) => (a -> w) -> Sized f n a -> w # cfoldMap' :: (Dom (Sized f n) a, Monoid m) => (a -> m) -> Sized f n a -> m # cfold :: (Dom (Sized f n) w, Monoid w) => Sized f n w -> w # cfoldr :: Dom (Sized f n) a => (a -> b -> b) -> b -> Sized f n a -> b # cfoldlM :: (Monad m, Dom (Sized f n) b) => (a -> b -> m a) -> a -> Sized f n b -> m a # cfoldlM' :: (Monad m, Dom (Sized f n) b) => (a -> b -> m a) -> a -> Sized f n b -> m a # cfoldrM :: (Monad m, Dom (Sized f n) a) => (a -> b -> m b) -> b -> Sized f n a -> m b # cfoldrM' :: (Monad m, Dom (Sized f n) a) => (a -> b -> m b) -> b -> Sized f n a -> m b # cfoldl :: Dom (Sized f n) a => (b -> a -> b) -> b -> Sized f n a -> b # cfoldr' :: Dom (Sized f n) a => (a -> b -> b) -> b -> Sized f n a -> b # cfoldl' :: Dom (Sized f n) a => (b -> a -> b) -> b -> Sized f n a -> b # cbasicToList :: Dom (Sized f n) a => Sized f n a -> [a] # cfoldr1 :: Dom (Sized f n) a => (a -> a -> a) -> Sized f n a -> a # cfoldl1 :: Dom (Sized f n) a => (a -> a -> a) -> Sized f n a -> a # cindex :: Dom (Sized f n) a => Sized f n a -> Int -> a # cnull :: Dom (Sized f n) a => Sized f n a -> Bool # clength :: Dom (Sized f n) a => Sized f n a -> Int # cany :: Dom (Sized f n) a => (a -> Bool) -> Sized f n a -> Bool # call :: Dom (Sized f n) a => (a -> Bool) -> Sized f n a -> Bool # celem :: (Eq a, Dom (Sized f n) a) => a -> Sized f n a -> Bool # cnotElem :: (Eq a, Dom (Sized f n) a) => a -> Sized f n a -> Bool # cminimum :: (Ord a, Dom (Sized f n) a) => Sized f n a -> a # cmaximum :: (Ord a, Dom (Sized f n) a) => Sized f n a -> a # csum :: (Num a, Dom (Sized f n) a) => Sized f n a -> a # cproduct :: (Num a, Dom (Sized f n) a) => Sized f n a -> a # cctraverse_ :: (CApplicative g, CPointed g, Dom g (), Dom (Sized f n) a, Dom g b) => (a -> g b) -> Sized f n a -> g () # ctraverse_ :: (Applicative g, Dom (Sized f n) a) => (a -> g b) -> Sized f n a -> g () # clast :: Dom (Sized f n) a => Sized f n a -> a # chead :: Dom (Sized f n) a => Sized f n a -> a # cfind :: Dom (Sized f n) a => (a -> Bool) -> Sized f n a -> Maybe a # cfindIndex :: Dom (Sized f n) a => (a -> Bool) -> Sized f n a -> Maybe Int # cfindIndices :: Dom (Sized f n) a => (a -> Bool) -> Sized f n a -> [Int] # celemIndex :: (Dom (Sized f n) a, Eq a) => a -> Sized f n a -> Maybe Int # celemIndices :: (Dom (Sized f n) a, Eq a) => a -> Sized f n a -> [Int] # | |
CTraversable f => CTraversable (Sized f n) Source # | |
Defined in Data.Sized | |
CFunctor f => CFunctor (Sized f n) Source # | |
Constrained (Sized f n) Source # | |
Defined in Data.Sized.Internal | |
(CFreeMonoid f, KnownNat n) => CPointed (Sized f n) Source # | |
(CZip f, CFreeMonoid f) => CSemialign (Sized f n) Source # | N.B. Since |
(KnownNat n, CZip f, CFreeMonoid f) => CRepeat (Sized f n) Source # | |
(CZip f, CFreeMonoid f) => CZip (Sized f n) Source # | |
Show (f a) => Show (Sized f n a) Source # | |
NFData (f a) => NFData (Sized f n a) Source # | |
Defined in Data.Sized.Internal | |
Eq (f a) => Eq (Sized f n a) Source # | |
Ord (f a) => Ord (Sized f n a) Source # | |
Defined in Data.Sized.Internal | |
Hashable (f a) => Hashable (Sized f n a) Source # | |
Defined in Data.Sized.Internal | |
(Integral (Index (f a)), Ixed (f a)) => Ixed (Sized f n a) Source # | |
Defined in Data.Sized.Internal | |
MonoFoldable (f a) => MonoFoldable (Sized f n a) Source # | Since 0.2.0.0 |
Defined in Data.Sized.Internal ofoldMap :: Monoid m => (Element (Sized f n a) -> m) -> Sized f n a -> m # ofoldr :: (Element (Sized f n a) -> b -> b) -> b -> Sized f n a -> b # ofoldl' :: (a0 -> Element (Sized f n a) -> a0) -> a0 -> Sized f n a -> a0 # otoList :: Sized f n a -> [Element (Sized f n a)] # oall :: (Element (Sized f n a) -> Bool) -> Sized f n a -> Bool # oany :: (Element (Sized f n a) -> Bool) -> Sized f n a -> Bool # onull :: Sized f n a -> Bool # olength :: Sized f n a -> Int # olength64 :: Sized f n a -> Int64 # ocompareLength :: Integral i => Sized f n a -> i -> Ordering # otraverse_ :: Applicative f0 => (Element (Sized f n a) -> f0 b) -> Sized f n a -> f0 () # ofor_ :: Applicative f0 => Sized f n a -> (Element (Sized f n a) -> f0 b) -> f0 () # omapM_ :: Applicative m => (Element (Sized f n a) -> m ()) -> Sized f n a -> m () # oforM_ :: Applicative m => Sized f n a -> (Element (Sized f n a) -> m ()) -> m () # ofoldlM :: Monad m => (a0 -> Element (Sized f n a) -> m a0) -> a0 -> Sized f n a -> m a0 # ofoldMap1Ex :: Semigroup m => (Element (Sized f n a) -> m) -> Sized f n a -> m # ofoldr1Ex :: (Element (Sized f n a) -> Element (Sized f n a) -> Element (Sized f n a)) -> Sized f n a -> Element (Sized f n a) # ofoldl1Ex' :: (Element (Sized f n a) -> Element (Sized f n a) -> Element (Sized f n a)) -> Sized f n a -> Element (Sized f n a) # headEx :: Sized f n a -> Element (Sized f n a) # lastEx :: Sized f n a -> Element (Sized f n a) # unsafeHead :: Sized f n a -> Element (Sized f n a) # unsafeLast :: Sized f n a -> Element (Sized f n a) # maximumByEx :: (Element (Sized f n a) -> Element (Sized f n a) -> Ordering) -> Sized f n a -> Element (Sized f n a) # minimumByEx :: (Element (Sized f n a) -> Element (Sized f n a) -> Ordering) -> Sized f n a -> Element (Sized f n a) # | |
MonoFunctor (f a) => MonoFunctor (Sized f n a) Source # | Since 0.2.0.0 |
Storable a => MonoTraversable (Sized Vector n a) Source # | Since 0.6.0.0 |
Defined in Data.Sized.Internal | |
Unbox a => MonoTraversable (Sized Vector n a) Source # | Since 0.6.0.0 |
Defined in Data.Sized.Internal | |
MonoTraversable (f a) => MonoTraversable (Sized f n a) Source # | Since 0.2.0.0 |
type Dom (Sized f n) a Source # | |
Defined in Data.Sized.Internal | |
type Index (Sized f n a) Source # | Since 0.2.0.0 |
Defined in Data.Sized.Internal | |
type IxValue (Sized f n a) Source # | Since 0.3.0.0 |
Defined in Data.Sized.Internal | |
type Element (Sized f n a) Source # | |
Defined in Data.Sized.Internal |
data SomeSized f a where Source #
Sized
vector with the length is existentially quantified.
This type is used mostly when the return type's length cannot
be statically determined beforehand.
SomeSized sn xs :: SomeSized f a
stands for the Sized
sequence
xs
of element type a
and length sn
.
Since 0.7.0.0
Accessors
Length information
length :: forall f (n :: Nat) a. (Dom f a, KnownNat n) => Sized f n a -> Int Source #
Returns the length of wrapped containers.
If you use unsafeFromList
or similar unsafe functions,
this function may return different value from type-parameterized length.
Since 0.8.0.0 (type changed)
sLength :: forall f (n :: Nat) a. (Dom f a, KnownNat n) => Sized f n a -> SNat n Source #
SNat
version of length
.
Since 0.8.0.0 (type changed)
null :: forall f (n :: Nat) a. (CFoldable f, Dom f a) => Sized f n a -> Bool Source #
Test if the sequence is empty or not.
Since 0.7.0.0
Indexing
(%!!) :: forall f (n :: Nat) c. (CFoldable f, Dom f c) => Sized f n c -> Ordinal n -> c Source #
Safe indexing with Ordinal
s.
Since 0.7.0.0
index :: forall f (m :: Nat) a. (CFoldable f, Dom f a, 1 <= m) => Int -> Sized f m a -> a Source #
Flipped version of !!
.
Since 0.7.0.0
sIndex :: forall f (n :: Nat) c. (CFoldable f, Dom f c) => Ordinal n -> Sized f n c -> c Source #
Flipped version of %!!
.
Since 0.7.0.0
head :: forall f (n :: Nat) a. (CFoldable f, Dom f a, 0 < n) => Sized f n a -> a Source #
Take the first element of non-empty sequence. If you want to make case-analysis for general sequence, see Views and Patterns section.
Since 0.7.0.0
last :: forall f (n :: Nat) a. (0 < n, CFoldable f, Dom f a) => Sized f n a -> a Source #
Take the last element of non-empty sequence. If you want to make case-analysis for general sequence, see Views and Patterns section.
Since 0.7.0.0
uncons :: forall f (n :: Nat) a. (KnownNat n, CFreeMonoid f, Dom f a, 1 <= n) => Sized f n a -> Uncons f n a Source #
Take the head
and tail
of non-empty sequence.
If you want to make case-analysis for general sequence,
see Views and Patterns section.
Since 0.7.0.0
uncons' :: forall f (n :: Nat) a proxy. (KnownNat n, CFreeMonoid f, Dom f a) => proxy n -> Sized f (Succ n) a -> Uncons f (Succ n) a Source #
uncons
with explicit specified length n
Since 0.7.0.0
unsnoc :: forall f (n :: Nat) a. (KnownNat n, CFreeMonoid f, Dom f a, 0 < n) => Sized f n a -> Unsnoc f n a Source #
Take the init
and last
of non-empty sequence.
If you want to make case-analysis for general sequence,
see Views and Patterns section.
Since 0.7.0.0
unsnoc' :: forall f (n :: Nat) a proxy. (KnownNat n, CFreeMonoid f, Dom f a) => proxy n -> Sized f (Succ n) a -> Unsnoc f (Succ n) a Source #
unsnoc'
with explicit specified length n
Since 0.7.0.0
Slicing
tail :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => Sized f (1 + n) a -> Sized f n a Source #
Take the tail of non-empty sequence. If you want to make case-analysis for general sequence, see Views and Patterns section.
Since 0.7.0.0
init :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => Sized f (n + 1) a -> Sized f n a Source #
Take the initial segment of non-empty sequence. If you want to make case-analysis for general sequence, see Views and Patterns section.
Since 0.7.0.0
take :: forall (n :: Nat) f (m :: Nat) a. (CFreeMonoid f, Dom f a, n <= m) => SNat n -> Sized f m a -> Sized f n a Source #
take k xs
takes first k
element of xs
where
the length of xs
should be larger than k
.
Since 0.7.0.0
takeAtMost :: forall (n :: Nat) f m a. (CFreeMonoid f, Dom f a) => SNat n -> Sized f m a -> Sized f (Min n m) a Source #
takes first at most takeAtMost
k xsk
elements of xs
.
Since 0.7.0.0
drop :: forall (n :: Nat) f (m :: Nat) a. (CFreeMonoid f, Dom f a, n <= m) => SNat n -> Sized f m a -> Sized f (m - n) a Source #
drop k xs
drops first k
element of xs
and returns
the rest of sequence, where the length of xs
should be larger than k
.
Since 0.7.0.0
splitAt :: forall (n :: Nat) f m a. (CFreeMonoid f, Dom f a, n <= m) => SNat n -> Sized f m a -> (Sized f n a, Sized f (m -. n) a) Source #
splitAt k xs
split xs
at k
, where
the length of xs
should be less than or equal to k
.
Since 0.7.0.0
splitAtMost :: forall (n :: Nat) f (m :: Nat) a. (CFreeMonoid f, Dom f a) => SNat n -> Sized f m a -> (Sized f (Min n m) a, Sized f (m -. n) a) Source #
splitAtMost k xs
split xs
at k
.
If k
exceeds the length of xs
, then the second result value become empty.
Since 0.7.0.0
Construction
Initialisation
empty :: forall f a. (Monoid (f a), Dom f a) => Sized f 0 a Source #
Empty sequence.
Since 0.7.0.0 (type changed)
singleton :: forall f a. (CPointed f, Dom f a) => a -> Sized f 1 a Source #
Sequence with one element.
Since 0.7.0.0
replicate :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => SNat n -> a -> Sized f n a Source #
Replicates the same value.
Since 0.7.0.0
replicate' :: forall f (n :: Nat) a. (KnownNat (n :: Nat), CFreeMonoid f, Dom f a) => a -> Sized f n a Source #
replicate
with the length inferred.
Since 0.7.0.0
generate :: forall f (n :: Nat) (a :: Type). (CFreeMonoid f, Dom f a) => SNat n -> (Ordinal n -> a) -> Sized f n a Source #
Construct a sequence of the given length by applying the function to each index.
Since 0.7.0.0
generate' :: forall f (n :: Nat) (a :: Type). (KnownNat n, CFreeMonoid f, Dom f a) => (Ordinal n -> a) -> Sized f n a Source #
generate
with length inferred.
Since 0.8.0.0
Concatenation
cons :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => a -> Sized f n a -> Sized f (1 + n) a Source #
Append an element to the head of sequence.
Since 0.8.0.0
(<|) :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => a -> Sized f n a -> Sized f (1 + n) a infixr 5 Source #
Infix version of cons
.
Since 0.8.0.0
snoc :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => Sized f n a -> a -> Sized f (n + 1) a Source #
Append an element to the tail of sequence.
Since 0.7.0.0
(|>) :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => Sized f n a -> a -> Sized f (n + 1) a infixl 5 Source #
Infix version of snoc
.
Since 0.7.0.0
append :: forall f (n :: Nat) (m :: Nat) a. (CFreeMonoid f, Dom f a) => Sized f n a -> Sized f m a -> Sized f (n + m) a Source #
Append two lists.
Since 0.7.0.0
(++) :: forall f (n :: Nat) (m :: Nat) a. (CFreeMonoid f, Dom f a) => Sized f n a -> Sized f m a -> Sized f (n + m) a infixr 5 Source #
Infix version of append
.
Since 0.7.0.0
concat :: forall f' (m :: Nat) f (n :: Nat) a. (CFreeMonoid f, CFunctor f', CFoldable f', Dom f a, Dom f' (f a), Dom f' (Sized f n a)) => Sized f' m (Sized f n a) -> Sized f (m * n) a Source #
Concatenates multiple sequences into one.
Since 0.7.0.0
Zips
zip :: forall f (n :: Nat) a (m :: Nat) b. (Dom f a, CZip f, Dom f b, Dom f (a, b)) => Sized f n a -> Sized f m b -> Sized f (Min n m) (a, b) Source #
Zipping two sequences. Length is adjusted to shorter one.
Since 0.7.0.0
zipSame :: forall f (n :: Nat) a b. (Dom f a, CZip f, Dom f b, Dom f (a, b)) => Sized f n a -> Sized f n b -> Sized f n (a, b) Source #
zip
for the sequences of the same length.
Since 0.7.0.0
zipWith :: forall f (n :: Nat) a (m :: Nat) b c. (Dom f a, CZip f, Dom f b, CFreeMonoid f, Dom f c) => (a -> b -> c) -> Sized f n a -> Sized f m b -> Sized f (Min n m) c Source #
Zipping two sequences with funtion. Length is adjusted to shorter one.
Since 0.7.0.0
zipWithSame :: forall f (n :: Nat) a b c. (Dom f a, CZip f, Dom f b, CFreeMonoid f, Dom f c) => (a -> b -> c) -> Sized f n a -> Sized f n b -> Sized f n c Source #
zipWith
for the sequences of the same length.
Since 0.7.0.0
unzip :: forall f (n :: Nat) a b. (CUnzip f, Dom f a, Dom f b, Dom f (a, b)) => Sized f n (a, b) -> (Sized f n a, Sized f n b) Source #
Unzipping the sequence of tuples.
Since 0.7.0.0
unzipWith :: forall f (n :: Nat) a b c. (CUnzip f, Dom f a, Dom f b, Dom f c) => (a -> (b, c)) -> Sized f n a -> (Sized f n b, Sized f n c) Source #
Unzipping the sequence of tuples.
Since 0.7.0.0
Transformation
map :: forall f (n :: Nat) a b. (CFreeMonoid f, Dom f a, Dom f b) => (a -> b) -> Sized f n a -> Sized f n b Source #
Map function.
Since 0.7.0.0
reverse :: forall f (n :: Nat) a. (Dom f a, CFreeMonoid f) => Sized f n a -> Sized f n a Source #
Reverse function.
Since 0.7.0.0
intersperse :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => a -> Sized f n a -> Sized f ((2 * n) -. 1) a Source #
Intersperces.
Since 0.7.0.0
nub :: forall f (n :: Nat) a. (Dom f a, Eq a, CFreeMonoid f) => Sized f n a -> SomeSized f a Source #
Remove all duplicates.
Since 0.7.0.0
sort :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a, Ord a) => Sized f n a -> Sized f n a Source #
Sorting sequence by ascending order.
Since 0.7.0.0
sortBy :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => (a -> a -> Ordering) -> Sized f n a -> Sized f n a Source #
Generalized version of sort
.
Since 0.7.0.0
insert :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a, Ord a) => a -> Sized f n a -> Sized f (Succ n) a Source #
Insert new element into the presorted sequence.
Since 0.7.0.0
insertBy :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => (a -> a -> Ordering) -> a -> Sized f n a -> Sized f (Succ n) a Source #
Generalized version of insert
.
Since 0.7.0.0
Conversion
List
toList :: forall f (n :: Nat) a. (CFoldable f, Dom f a) => Sized f n a -> [a] Source #
Convert to list.
Since 0.7.0.0
fromList :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => SNat n -> [a] -> Maybe (Sized f n a) Source #
If the given list is shorter than n
, then returns Nothing
Otherwise returns Sized f n a
consisting of initial n
element
of given list.
Since 0.7.0.0 (type changed)
fromList' :: forall f (n :: Nat) a. (Dom f a, CFreeMonoid f, KnownNat n) => [a] -> Maybe (Sized f n a) Source #
fromList
with the result length inferred.
Since 0.7.0.0
unsafeFromList :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => SNat n -> [a] -> Sized f n a Source #
Unsafe version of fromList
. If the length of the given list does not
equal to n
, then something unusual happens.
Since 0.7.0.0
unsafeFromList' :: forall f (n :: Nat) a. (KnownNat n, CFreeMonoid f, Dom f a) => [a] -> Sized f n a Source #
unsafeFromList
with the result length inferred.
Since 0.7.0.0
fromListWithDefault :: forall f (n :: Nat) a. (Dom f a, CFreeMonoid f) => SNat n -> a -> [a] -> Sized f n a Source #
Construct a Sized f n a
by padding default value if the given list is short.
Since 0.5.0.0 (type changed)
fromListWithDefault' :: forall f (n :: Nat) a. (KnownNat n, CFreeMonoid f, Dom f a) => a -> [a] -> Sized f n a Source #
fromListWithDefault
with the result length inferred.
Since 0.7.0.0
Base container
unsized :: forall f (n :: Nat) a. Sized f n a -> f a Source #
Forget the length and obtain the wrapped base container.
Since 0.7.0.0
toSized :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => SNat (n :: Nat) -> f a -> Maybe (Sized f n a) Source #
If the length of the input is shorter than n
, then returns Nothing
.
Otherwise returns Sized f n a
consisting of initial n
element
of the input.
Since 0.7.0.0
toSized' :: forall f (n :: Nat) a. (Dom f a, CFreeMonoid f, KnownNat n) => f a -> Maybe (Sized f n a) Source #
toSized
with the result length inferred.
Since 0.7.0.0
unsafeToSized :: forall f (n :: Nat) a. SNat n -> f a -> Sized f n a Source #
Unsafe version of toSized
. If the length of the given list does not
equal to n
, then something unusual happens.
Since 0.7.0.0
unsafeToSized' :: forall f (n :: Nat) a. (KnownNat n, Dom f a) => f a -> Sized f n a Source #
unsafeToSized
with the result length inferred.
Since 0.7.0.0
toSizedWithDefault :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => SNat (n :: Nat) -> a -> f a -> Sized f n a Source #
Construct a Sized f n a
by padding default value if the given list is short.
Since 0.7.0.0
toSizedWithDefault' :: forall f (n :: Nat) a. (KnownNat n, CFreeMonoid f, Dom f a) => a -> f a -> Sized f n a Source #
toSizedWithDefault
with the result length inferred.
Since 0.7.0.0
Querying
Partitioning
data Partitioned f n a where Source #
The type Partitioned f n a
represents partitioned sequence of length n
.
Value Partitioned lenL ls lenR rs
stands for:
- Entire sequence is divided into
ls
andrs
, and their length arelenL
andlenR
resp. lenL + lenR = n
Since 0.7.0.0
Partitioned :: Dom f a => SNat n -> Sized f n a -> SNat m -> Sized f m a -> Partitioned f (n + m) a |
takeWhile :: forall f (n :: Nat) a. (Dom f a, CFreeMonoid f) => (a -> Bool) -> Sized f n a -> SomeSized f a Source #
Take the initial segment as long as elements satisfys the predicate.
Since 0.7.0.0
dropWhile :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => (a -> Bool) -> Sized f n a -> SomeSized f a Source #
Drop the initial segment as long as elements satisfys the predicate.
Since 0.7.0.0
span :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => (a -> Bool) -> Sized f n a -> Partitioned f n a Source #
Split the sequence into the longest prefix of elements that satisfy the predicate and the rest.
Since 0.7.0.0
break :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => (a -> Bool) -> Sized f n a -> Partitioned f n a Source #
Split the sequence into the longest prefix of elements that do not satisfy the predicate and the rest.
Since 0.7.0.0
partition :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a) => (a -> Bool) -> Sized f n a -> Partitioned f n a Source #
Split the sequence in two parts, the first one containing those elements that satisfy the predicate and the second one those that don't.
Since 0.7.0.0
Searching
elem :: forall f (n :: Nat) a. (CFoldable f, Dom f a, Eq a) => a -> Sized f n a -> Bool Source #
Membership test; see also notElem
.
Since 0.7.0.0
notElem :: forall f (n :: Nat) a. (CFoldable f, Dom f a, Eq a) => a -> Sized f n a -> Bool Source #
Negation of elem
.
Since 0.7.0.0
find :: forall f (n :: Nat) a. (CFoldable f, Dom f a) => (a -> Bool) -> Sized f n a -> Maybe a Source #
Find the element satisfying the predicate.
Since 0.7.0.0
findIndex :: forall f (n :: Nat) a. (CFoldable f, Dom f a) => (a -> Bool) -> Sized f n a -> Maybe Int Source #
find the element satisfying findIndex
p xsp
and returns its index if exists.
Since 0.7.0.0
sFindIndex :: forall f (n :: Nat) a. (KnownNat (n :: Nat), CFoldable f, Dom f a) => (a -> Bool) -> Sized f n a -> Maybe (Ordinal n) Source #
findIndices :: forall f (n :: Nat) a. (CFoldable f, Dom f a) => (a -> Bool) -> Sized f n a -> [Int] Source #
find all elements satisfying findIndices
p xsp
and returns their indices.
Since 0.7.0.0
sFindIndices :: forall f (n :: Nat) a. (CFoldable f, Dom f a, KnownNat (n :: Nat)) => (a -> Bool) -> Sized f n a -> [Ordinal n] Source #
Ordinal
version of findIndices
.
Since 0.7.0.0
elemIndex :: forall f (n :: Nat) a. (CFoldable f, Eq a, Dom f a) => a -> Sized f n a -> Maybe Int Source #
Returns the index of the given element in the list, if exists.
Since 0.7.0.0
sElemIndex :: forall f (n :: Nat) a. (KnownNat n, CFoldable f, Dom f a, Eq a) => a -> Sized f n a -> Maybe (Ordinal n) Source #
Ordinal version of elemIndex
.
Since 0.7.0.0, we no longer do boundary check inside the definition.
Since 0.7.0.0
sUnsafeElemIndex :: forall f (n :: Nat) a. (KnownNat n, CFoldable f, Dom f a, Eq a) => a -> Sized f n a -> Maybe (Ordinal n) Source #
Deprecated: No difference with sElemIndex; use sElemIndex instead.
Since 0.5.0.0 (type changed)
Ordinal version of elemIndex
.
Since 0.7.0.0, we no longer do boundary check inside the definition.
Since 0.7.0.0
elemIndices :: forall f (n :: Nat) a. (CFoldable f, Dom f a, Eq a) => a -> Sized f n a -> [Int] Source #
Returns all indices of the given element in the list.
Since 0.7.0.0
sElemIndices :: forall f (n :: Nat) a. (CFoldable f, KnownNat (n :: Nat), Dom f a, Eq a) => a -> Sized f n a -> [Ordinal n] Source #
Ordinal version of elemIndices
Since 0.7.0.0
Views and Patterns
With GHC's ViewPatterns
and PatternSynonym
extensions,
we can pattern-match on arbitrary Sized f n a
if f
is list-like functor.
Curretnly, there are two direction view and patterns: Cons and Snoc.
Assuming underlying sequence type f
has O(1) implementation for cnull
, chead
(resp. clast
) and ctail
(resp. cinit
), We can view and pattern-match on
cons (resp. snoc) of Sized f n a
in O(1).
Views
With ViewPatterns
extension, we can pattern-match on Sized
value as follows:
slen :: (KnownNat
n, 'Dom f a' f) =>Sized
f n a ->SNat
n slen (viewCons
->NilCV
) =SZ
slen (viewCons
-> _:-
as) =SS
(slen as) slen _ = error "impossible"
The constraint (
is needed for view function.
In the above, we have extra wildcard pattern (KnownNat
n, 'Dom f a' f)_
) at the last.
Code compiles if we removed it, but current GHC warns for incomplete pattern,
although we know first two patterns exhausts all the case.
Equivalently, we can use snoc-style pattern-matching:
slen :: (KnownNat
n, 'Dom f a' f) =>Sized
f n a ->SNat
n slen (viewSnoc
->NilSV
) =SZ
slen (viewSnoc
-> as-::
_) =SS
(slen as)
Patterns
So we can pattern match on both end of sequence via views, but it is rather clumsy to nest it. For example:
nextToHead :: ('Dom f a' f,KnownNat
n) =>Sized
f (S
(S
n)) a -> a nextToHead (viewCons
-> _:-
(viewCons
-> a:-
_)) = a
In such a case, with PatternSynonyms
extension we can write as follows:
nextToHead :: ('Dom f a' f,KnownNat
n) =>Sized
f (S
(S
n)) a -> a nextToHead (_:<
a:<
_) = a
Of course, we can also rewrite above slen
example usNat PatternSynonyms
:
slen :: (KnownNat
n, 'Dom f a' f) =>Sized
f n a ->SNat
n slenNil
=SZ
slen (_:<
as) =SS
(slen as)
So, we can use
and :<
(resp. Nil
and :>
) to
pattern-match directly on cons-side (resp. snoc-side) as we usually do for lists.
Nil
, Nil
, and :<
are neither functions nor data constructors,
but pattern synonyms so we cannot use them in expression contexts.
For more detail on pattern synonyms, see
GHC Users Guide
and
HaskellWiki.:>
Definitions
viewCons :: forall f (n :: Nat) a. (KnownNat n, CFreeMonoid f, Dom f a) => Sized f n a -> ConsView f n a Source #
Case analysis for the cons-side of sequence.
Since 0.5.0.0 (type changed)
viewSnoc :: forall f (n :: Nat) a. (KnownNat n, CFreeMonoid f, Dom f a) => Sized f n a -> SnocView f n a Source #
Case analysis for the snoc-side of sequence.
Since 0.5.0.0 (type changed)
pattern Nil :: forall f (n :: Nat) a. (KnownNat n, CFreeMonoid f, Dom f a) => n ~ 0 => Sized f n a Source #
Pattern synonym for a nil sequence.
pattern (:<) :: forall (f :: Type -> Type) a (n :: Nat). (Dom f a, KnownNat n, CFreeMonoid f) => forall (n1 :: Nat). (n ~ (1 + n1), KnownNat n1) => a -> Sized f n1 a -> Sized f n a infixr 5 Source #
Pattern synonym for cons-side uncons.
pattern (:>) :: forall (f :: Type -> Type) a (n :: Nat). (Dom f a, KnownNat n, CFreeMonoid f) => forall (n1 :: Nat). (n ~ (n1 + 1), KnownNat n1) => Sized f n1 a -> a -> Sized f n a infixl 5 Source #
Pattern synonym for snoc-side unsnoc.
Orphan instances
(Functor f, CFreeMonoid f, CZip f, KnownNat n, forall a. DomC f a) => Applicative (Sized f n) Source # | Applicative instance, generalizing |
(CFreeMonoid f, CZip f) => CApplicative (Sized f n) Source # | |
pair :: (Dom (Sized f n) a, Dom (Sized f n) b, Dom (Sized f n) (a, b)) => Sized f n a -> Sized f n b -> Sized f n (a, b) # (<.>) :: (Dom (Sized f n) a, Dom (Sized f n) b, Dom (Sized f n) (a -> b)) => Sized f n (a -> b) -> Sized f n a -> Sized f n b # (.>) :: (Dom (Sized f n) a, Dom (Sized f n) b) => Sized f n a -> Sized f n b -> Sized f n b # (<.) :: (Dom (Sized f n) a, Dom (Sized f n) b) => Sized f n a -> Sized f n b -> Sized f n a # | |
CTraversable f => CTraversable (Sized f n) Source # | |
(CFreeMonoid f, KnownNat n) => CPointed (Sized f n) Source # | |
(CZip f, CFreeMonoid f) => CSemialign (Sized f n) Source # | N.B. Since |
(KnownNat n, CZip f, CFreeMonoid f) => CRepeat (Sized f n) Source # | |
(CZip f, CFreeMonoid f) => CZip (Sized f n) Source # | |