GHC.TypeLits

# Kinds

data Nat

data Symbol

# Linking type and value level

class KnownNat n

natVal

natVal'

class KnownSymbol n

symbolVal

symbolVal'

data SomeNat

data SomeSymbol

someNatVal

someSymbolVal

sameNat

sameSymbol

# Functions on type literals

type x <= y

type family (m :: Nat) <=? (n :: Nat) :: Bool

type family (m :: Nat) + (n :: Nat) :: Nat

type family (m :: Nat) * (n :: Nat) :: Nat

type family (m :: Nat) ^ (n :: Nat) :: Nat

type family (m :: Nat) - (n :: Nat) :: Nat

type family AppendSymbol (m :: Symbol) (n :: Symbol) :: Symbol

type family CmpNat (m :: Nat) (n :: Nat) :: Ordering

type family CmpSymbol (m :: Symbol) (n :: Symbol) :: Ordering

# User-defined type errors

type family TypeError (a :: ErrorMessage) :: b where ...

data ErrorMessage