sized-0.7.0.0: Sized sequence data-types

Safe HaskellNone
LanguageHaskell2010

Data.Sized.Builtin

Contents

Description

This module exports Sized type and functions specialized to GHC's built-in type numeral Nat.

Synopsis

Main Data-types

type Sized = (Sized :: (Type -> Type) -> Nat -> Type -> Type) Source #

pattern SomeSized :: forall (f :: Type -> Type) a. forall (n :: Nat). SNat n -> Sized f n a -> SomeSized f a Source #

type Ordinal = (Ordinal :: Nat -> Type) Source #

class Dom f a => DomC f a Source #

Instances
Dom f a => DomC f a Source # 
Instance details

Defined in Data.Sized

Accessors

Length information

length :: (Dom f a, CFoldable f, KnownNat n) => Sized f n a -> Int Source #

sLength :: (Dom f a, CFoldable f) => Sized f n a -> SNat n Source #

null :: (Dom f a, CFoldable f) => Sized f n a -> Bool Source #

Indexing

(!!) :: (Dom f a, CFoldable f, (1 <= m) ~ True) => Sized f m a -> Int -> a Source #

(%!!) :: (Dom f c, CFoldable f) => Sized f n c -> Ordinal n -> c Source #

index :: (Dom f a, CFoldable f, (1 <= m) ~ True) => Int -> Sized f m a -> a Source #

sIndex :: (Dom f c, CFoldable f) => Ordinal n -> Sized f n c -> c Source #

head :: (Dom f a, CFoldable f, (0 < n) ~ True) => Sized f n a -> a Source #

last :: (Dom f a, CFoldable f, (0 < n) ~ True) => Sized f n a -> a Source #

uncons :: (Dom f a, KnownNat n, CFreeMonoid f, (0 < n) ~ True) => Sized f n a -> Uncons f n a Source #

uncons' :: (Dom f a, KnownNat n, CFreeMonoid f, (0 < n) ~ True) => Sized f n a -> Uncons f n a Source #

type Uncons f (n :: Nat) a = Uncons f n a Source #

pattern Uncons :: forall (f :: Type -> Type) (n :: Nat) a. () => forall (n1 :: Nat). (n ~ Succ n1, SingI n1) => a -> Sized f n1 a -> Uncons f n a Source #

unsnoc :: (Dom f a, KnownNat n, CFreeMonoid f, (0 < n) ~ True) => Sized f n a -> Unsnoc f n a Source #

unsnoc' :: (Dom f a, KnownNat n, CFreeMonoid f) => proxy n -> Sized f (n + 1) a -> Unsnoc f (n + 1) a Source #

type Unsnoc f (n :: Nat) a = Unsnoc f n a Source #

pattern Unsnoc :: forall (f :: Type -> Type) (n :: Nat) a. () => forall (n1 :: Nat). n ~ Succ n1 => Sized f n1 a -> a -> Unsnoc f n a Source #

Slicing

tail :: (Dom f a, CFreeMonoid f) => Sized f (1 + n) a -> Sized f n a Source #

init :: (Dom f a, CFreeMonoid f) => Sized f (n + 1) a -> Sized f n a Source #

take :: (Dom f a, CFreeMonoid f, (n <= m) ~ True) => SNat n -> Sized f m a -> Sized f n a Source #

takeAtMost :: (Dom f a, CFreeMonoid f) => SNat n -> Sized f m a -> Sized f (Min n m) a Source #

drop :: (Dom f a, CFreeMonoid f, (n <= m) ~ True) => SNat n -> Sized f m a -> Sized f (m - n) a Source #

splitAt :: (Dom f a, CFreeMonoid f, (n <= m) ~ True) => SNat n -> Sized f m a -> (Sized f n a, Sized f (m - n) a) Source #

splitAtMost :: (Dom f a, CFreeMonoid f) => SNat n -> Sized f m a -> (Sized f (Min n m) a, Sized f (m -. n) a) Source #

Construction

Initialisation

empty :: (Dom f a, Monoid (f a)) => Sized f 0 a Source #

singleton :: (Dom f a, CFreeMonoid f) => a -> Sized f 1 a Source #

toSomeSized :: (Dom f a, CFoldable f) => f a -> SomeSized f a Source #

replicate :: (Dom f a, CFreeMonoid f) => SNat n -> a -> Sized f n a Source #

replicate' :: (Dom f a, KnownNat n, CFreeMonoid f) => a -> Sized f n a Source #

generate :: (Dom f a, CFreeMonoid f) => SNat n -> (Ordinal n -> a) -> Sized f n a Source #

Concatenation

cons :: (Dom f a, CFreeMonoid f) => a -> Sized f n a -> Sized f (n + 1) a Source #

(<|) :: (Dom f a, CFreeMonoid f) => a -> Sized f n a -> Sized f (n + 1) a Source #

snoc :: (Dom f a, CFreeMonoid f) => Sized f n a -> a -> Sized f (n + 1) a Source #

(|>) :: (Dom f a, CFreeMonoid f) => Sized f n a -> a -> Sized f (n + 1) a Source #

append :: (Dom f a, CFreeMonoid f) => Sized f n a -> Sized f m a -> Sized f (n + m) a Source #

(++) :: (Dom f a, CFreeMonoid f) => Sized f n a -> Sized f m a -> Sized f (n + m) a Source #

concat :: (Dom f a, Dom f' (f a), Dom f' (Sized f n a), CFreeMonoid f, CFunctor f', CFoldable f') => Sized f' m (Sized f n a) -> Sized f (m * n) a Source #

Zips

zip :: (Dom f a, Dom f b, Dom f (a, b), CZip f) => Sized f n a -> Sized f m b -> Sized f (Min n m) (a, b) Source #

zipSame :: (Dom f a, Dom f b, Dom f (a, b), CZip f) => Sized f n a -> Sized f n b -> Sized f n (a, b) Source #

zipWith :: (Dom f a, Dom f b, Dom f c, CZip f, CFreeMonoid f) => (a -> b -> c) -> Sized f n a -> Sized f m b -> Sized f (Min n m) c Source #

zipWithSame :: (Dom f a, Dom f b, Dom f c, CZip f, CFreeMonoid f) => (a -> b -> c) -> Sized f n a -> Sized f n b -> Sized f n c Source #

unzip :: (Dom f a, Dom f b, Dom f (a, b), CUnzip f) => Sized f n (a, b) -> (Sized f n a, Sized f n b) Source #

unzipWith :: (Dom f a, Dom f b, Dom f c, CUnzip f) => (a -> (b, c)) -> Sized f n a -> (Sized f n b, Sized f n c) Source #

Transformation

map :: (Dom f a, Dom f b, CFreeMonoid f) => (a -> b) -> Sized f n a -> Sized f n b Source #

reverse :: (Dom f a, CFreeMonoid f) => Sized f n a -> Sized f n a Source #

intersperse :: (Dom f a, CFreeMonoid f) => a -> Sized f n a -> Sized f ((2 * n) -. 1) a Source #

nub :: (Dom f a, Eq a, CFreeMonoid f) => Sized f n a -> SomeSized f a Source #

sort :: (Dom f a, CFreeMonoid f, Ord a) => Sized f n a -> Sized f n a Source #

sortBy :: (Dom f a, CFreeMonoid f) => (a -> a -> Ordering) -> Sized f n a -> Sized f n a Source #

insert :: (Dom f a, CFreeMonoid f, Ord a) => a -> Sized f n a -> Sized f (n + 1) a Source #

insertBy :: (Dom f a, CFreeMonoid f) => (a -> a -> Ordering) -> a -> Sized f n a -> Sized f (n + 1) a Source #

Conversion

List

toList :: (Dom f a, CFoldable f) => Sized f n a -> [a] Source #

fromList :: (Dom f a, CFreeMonoid f) => SNat n -> [a] -> Maybe (Sized f n a) Source #

fromList' :: (Dom f a, CFreeMonoid f, KnownNat n) => [a] -> Maybe (Sized f n a) Source #

unsafeFromList :: (Dom f a, CFreeMonoid f) => SNat n -> [a] -> Sized f n a Source #

unsafeFromList' :: (Dom f a, KnownNat n, CFreeMonoid f) => [a] -> Sized f n a Source #

fromListWithDefault :: (Dom f a, CFreeMonoid f) => SNat n -> a -> [a] -> Sized f n a Source #

fromListWithDefault' :: (Dom f a, KnownNat n, CFreeMonoid f) => a -> [a] -> Sized f n a Source #

Base container

unsized :: Sized f n a -> f a Source #

toSized :: (Dom f a, CFreeMonoid f) => SNat n -> f a -> Maybe (Sized f n a) Source #

toSized' :: (Dom f a, CFreeMonoid f, KnownNat n) => f a -> Maybe (Sized f n a) Source #

unsafeToSized :: SNat n -> f a -> Sized f n a Source #

unsafeToSized' :: (Dom f a, KnownNat n) => f a -> Sized f n a Source #

toSizedWithDefault :: (Dom f a, CFreeMonoid f) => SNat n -> a -> f a -> Sized f n a Source #

toSizedWithDefault' :: (Dom f a, KnownNat n, CFreeMonoid f) => a -> f a -> Sized f n a Source #

Querying

Partitioning

type Partitioned f (n :: Nat) a = Partitioned f n a Source #

pattern Partitioned :: forall (f :: Type -> Type) (n :: Nat) a. () => forall (n1 :: Nat) (m :: Nat). (n ~ (n1 + m), Dom f a) => SNat n1 -> Sized f n1 a -> SNat m -> Sized f m a -> Partitioned f n a Source #

takeWhile :: (Dom f a, CFreeMonoid f) => (a -> Bool) -> Sized f n a -> SomeSized f a Source #

dropWhile :: (Dom f a, CFreeMonoid f) => (a -> Bool) -> Sized f n a -> SomeSized f a Source #

span :: (Dom f a, CFreeMonoid f) => (a -> Bool) -> Sized f n a -> Partitioned f n a Source #

break :: (Dom f a, CFreeMonoid f) => (a -> Bool) -> Sized f n a -> Partitioned f n a Source #

partition :: (Dom f a, CFreeMonoid f) => (a -> Bool) -> Sized f n a -> Partitioned f n a Source #

Searching

elem :: (Dom f a, CFoldable f, Eq a) => a -> Sized f n a -> Bool Source #

notElem :: (Dom f a, CFoldable f, Eq a) => a -> Sized f n a -> Bool Source #

find :: (Dom f a, CFoldable f) => (a -> Bool) -> Sized f n a -> Maybe a Source #

findIndex :: (Dom f a, CFoldable f) => (a -> Bool) -> Sized f n a -> Maybe Int Source #

sFindIndex :: (Dom f a, KnownNat n, CFoldable f) => (a -> Bool) -> Sized f n a -> Maybe (Ordinal n) Source #

findIndices :: (Dom f a, CFoldable f) => (a -> Bool) -> Sized f n a -> [Int] Source #

sFindIndices :: (Dom f a, CFoldable f, KnownNat n) => (a -> Bool) -> Sized f n a -> [Ordinal n] Source #

elemIndex :: (Dom f a, CFoldable f) => (a -> Bool) -> Sized f n a -> Maybe Int Source #

sElemIndex :: (Dom f a, KnownNat n, CFoldable f) => (a -> Bool) -> Sized f n a -> Maybe (Ordinal n) Source #

sUnsafeElemIndex :: (Dom f a, KnownNat n, CFoldable f, Eq a) => a -> Sized f n a -> Maybe (Ordinal n) Source #

Deprecated: Use sElemIndex instead

elemIndices :: (Dom f a, CFoldable f) => (a -> Bool) -> Sized f n a -> [Int] Source #

sElemIndices :: (Dom f a, CFoldable f, KnownNat n) => (a -> Bool) -> Sized f n a -> [Ordinal n] Source #

Views and Patterns

Views

Patterns

Definitions

viewCons :: (Dom f a, KnownNat n, CFreeMonoid f) => Sized f n a -> ConsView f n a Source #

type ConsView f (n :: Nat) a = ConsView f n a Source #

pattern (:-) :: a -> Sized f n a -> ConsView f (Succ n) a infixr 5 Source #

pattern NilCV :: ConsView f (Zero nat) a Source #

viewSnoc :: (Dom f a, KnownNat n, CFreeMonoid f) => Sized f n a -> ConsView f n a Source #

type SnocView f (n :: Nat) a = SnocView f n a Source #

pattern (:-::) :: Sized f n a -> a -> SnocView f (n + One nat) a infixl 5 Source #

pattern NilSV :: SnocView f (Zero nat) a Source #

pattern (:<) :: forall (f :: Type -> Type) a (n :: Nat). (Dom f a, SingI n, CFreeMonoid f) => forall (n1 :: Nat). (n ~ Succ n1, SingI n1) => a -> Sized f n1 a -> Sized f n a infixr 5 Source #

pattern NilL :: forall f (n :: Nat) a. (KnownNat n, CFreeMonoid f, Dom f a) => n ~ 0 => Sized f n a Source #

pattern (:>) :: forall (f :: Type -> Type) a (n :: Nat). (Dom f a, SingI n, CFreeMonoid f) => forall (n1 :: Nat). (n ~ (n1 + 1), SingI n1) => Sized f n1 a -> a -> Sized f n a infixl 5 Source #

pattern NilR :: forall f (n :: Nat) a. (CFreeMonoid f, Dom f a, SingI n) => n ~ 0 => Sized f n a Source #