Data.HVect

typesafe strict vector

data HVect ts

empty

null

head

tail

singleton

length

type family HVectLen (ts :: [*]) :: Nat where ...

findFirst

type family InList (x :: *) (xs :: [*]) :: Nat where ...

type ListContains n x ts

type family NotInList (x :: *) (xs :: [*]) :: Bool where ...

type family MaybeToList (a :: Maybe *) :: [*] where ...

(!!)

type family HVectIdx (n :: Nat) (ts :: [*]) :: * where ...

type family HVectElim (ts :: [*]) (a :: *) :: * where ...

type family Append (as :: [*]) (bs :: [*]) :: [*] where ...

(<++>)

type family ReverseLoop (as :: [*]) (bs :: [*]) :: [*] where ...

type Reverse as

reverse

uncurry

data Rep ts

class HasRep ts

curryExpl

curry

packExpl

pack

type class constraints on list elements

type family AllHave (c :: * -> Constraint) (xs :: [*]) :: Constraint where ...

type level numeric utilities

data Nat

data SNat n

sNatToInt

intToSNat

data AnySNat

type family (m :: Nat) :< (n :: Nat) :: Bool where ...