singleton-nats-0.4.4: Unary natural numbers relying on the singletons infrastructure.

Safe HaskellNone
LanguageHaskell2010

Data.Nat

Synopsis

Documentation

data Nat Source #

Constructors

Z 
S Nat 
Instances
Eq Nat Source # 
Instance details

Defined in Data.Nat

Methods

(==) :: Nat -> Nat -> Bool #

(/=) :: Nat -> Nat -> Bool #

Num Nat Source # 
Instance details

Defined in Data.Nat

Methods

(+) :: Nat -> Nat -> Nat #

(-) :: Nat -> Nat -> Nat #

(*) :: Nat -> Nat -> Nat #

negate :: Nat -> Nat #

abs :: Nat -> Nat #

signum :: Nat -> Nat #

fromInteger :: Integer -> Nat #

Ord Nat Source # 
Instance details

Defined in Data.Nat

Methods

compare :: Nat -> Nat -> Ordering #

(<) :: Nat -> Nat -> Bool #

(<=) :: Nat -> Nat -> Bool #

(>) :: Nat -> Nat -> Bool #

(>=) :: Nat -> Nat -> Bool #

max :: Nat -> Nat -> Nat #

min :: Nat -> Nat -> Nat #

Show Nat Source # 
Instance details

Defined in Data.Nat

Methods

showsPrec :: Int -> Nat -> ShowS #

show :: Nat -> String #

showList :: [Nat] -> ShowS #

PShow Nat Source # 
Instance details

Defined in Data.Nat

Associated Types

type ShowsPrec arg arg1 arg2 :: Symbol #

type Show_ arg :: Symbol #

type ShowList arg arg1 :: Symbol #

SShow Nat => SShow Nat Source # 
Instance details

Defined in Data.Nat

Methods

sShowsPrec :: Sing t1 -> Sing t2 -> Sing t3 -> Sing (Apply (Apply (Apply ShowsPrecSym0 t1) t2) t3) #

sShow_ :: Sing t -> Sing (Apply Show_Sym0 t) #

sShowList :: Sing t1 -> Sing t2 -> Sing (Apply (Apply ShowListSym0 t1) t2) #

PNum Nat Source # 
Instance details

Defined in Data.Nat

Associated Types

type arg + arg1 :: a #

type arg - arg1 :: a #

type arg * arg1 :: a #

type Negate arg :: a #

type Abs arg :: a #

type Signum arg :: a #

type FromInteger arg :: a #

SNum Nat Source # 
Instance details

Defined in Data.Nat

Methods

(%+) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (+@#@$) t1) t2) #

(%-) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (-@#@$) t1) t2) #

(%*) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (*@#@$) t1) t2) #

sNegate :: Sing t -> Sing (Apply NegateSym0 t) #

sAbs :: Sing t -> Sing (Apply AbsSym0 t) #

sSignum :: Sing t -> Sing (Apply SignumSym0 t) #

sFromInteger :: Sing t -> Sing (Apply FromIntegerSym0 t) #

POrd Nat Source # 
Instance details

Defined in Data.Nat

Associated Types

type Compare arg arg1 :: Ordering #

type arg < arg1 :: Bool #

type arg <= arg1 :: Bool #

type arg > arg1 :: Bool #

type arg >= arg1 :: Bool #

type Max arg arg1 :: a #

type Min arg arg1 :: a #

SOrd Nat => SOrd Nat Source # 
Instance details

Defined in Data.Nat

Methods

sCompare :: Sing t1 -> Sing t2 -> Sing (Apply (Apply CompareSym0 t1) t2) #

(%<) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<@#@$) t1) t2) #

(%<=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (<=@#@$) t1) t2) #

(%>) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>@#@$) t1) t2) #

(%>=) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (>=@#@$) t1) t2) #

sMax :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MaxSym0 t1) t2) #

sMin :: Sing t1 -> Sing t2 -> Sing (Apply (Apply MinSym0 t1) t2) #

SEq Nat => SEq Nat Source # 
Instance details

Defined in Data.Nat

Methods

(%==) :: Sing a -> Sing b -> Sing (a == b) #

(%/=) :: Sing a -> Sing b -> Sing (a /= b) #

PEq Nat Source # 
Instance details

Defined in Data.Nat

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

SDecide Nat => SDecide Nat Source # 
Instance details

Defined in Data.Nat

Methods

(%~) :: Sing a -> Sing b -> Decision (a :~: b) #

SingKind Nat Source # 
Instance details

Defined in Data.Nat

Associated Types

type Demote Nat = (r :: Type) #

SingI Z Source # 
Instance details

Defined in Data.Nat

Methods

sing :: Sing Z #

SingI n => SingI (S n :: Nat) Source # 
Instance details

Defined in Data.Nat

Methods

sing :: Sing (S n) #

Eq (SNat n) Source # 
Instance details

Defined in Data.Nat

Methods

(==) :: SNat n -> SNat n -> Bool #

(/=) :: SNat n -> SNat n -> Bool #

Ord (SNat n) Source # 
Instance details

Defined in Data.Nat

Methods

compare :: SNat n -> SNat n -> Ordering #

(<) :: SNat n -> SNat n -> Bool #

(<=) :: SNat n -> SNat n -> Bool #

(>) :: SNat n -> SNat n -> Bool #

(>=) :: SNat n -> SNat n -> Bool #

max :: SNat n -> SNat n -> SNat n #

min :: SNat n -> SNat n -> SNat n #

ShowSing Nat => Show (Sing z) Source # 
Instance details

Defined in Data.Nat

Methods

showsPrec :: Int -> Sing z -> ShowS #

show :: Sing z -> String #

showList :: [Sing z] -> ShowS #

SuppressUnusedWarnings LitSym0 Source # 
Instance details

Defined in Data.Nat

SuppressUnusedWarnings SSym0 Source # 
Instance details

Defined in Data.Nat

SingI SSym0 Source # 
Instance details

Defined in Data.Nat

Methods

sing :: Sing SSym0 #

SingI (TyCon1 S) Source # 
Instance details

Defined in Data.Nat

Methods

sing :: Sing (TyCon1 S) #

data Sing (a :: Nat) Source # 
Instance details

Defined in Data.Nat

data Sing (a :: Nat) where
type Demote Nat Source # 
Instance details

Defined in Data.Nat

type Demote Nat = Nat
type Show_ (arg :: Nat) Source # 
Instance details

Defined in Data.Nat

type Show_ (arg :: Nat) = Apply (Show__6989586621680262717Sym0 :: TyFun Nat Symbol -> Type) arg
type FromInteger a Source # 
Instance details

Defined in Data.Nat

type Signum (a :: Nat) Source # 
Instance details

Defined in Data.Nat

type Signum (a :: Nat)
type Abs (a :: Nat) Source # 
Instance details

Defined in Data.Nat

type Abs (a :: Nat)
type Negate (arg :: Nat) Source # 
Instance details

Defined in Data.Nat

type Negate (arg :: Nat) = Apply (Negate_6989586621679505486Sym0 :: TyFun Nat Nat -> Type) arg
type ShowList (arg :: [Nat]) arg1 Source # 
Instance details

Defined in Data.Nat

type ShowList (arg :: [Nat]) arg1 = Apply (Apply (ShowList_6989586621680262728Sym0 :: TyFun [Nat] (Symbol ~> Symbol) -> Type) arg) arg1
type (a1 :: Nat) * (a2 :: Nat) Source # 
Instance details

Defined in Data.Nat

type (a1 :: Nat) * (a2 :: Nat)
type (a1 :: Nat) - (a2 :: Nat) Source # 
Instance details

Defined in Data.Nat

type (a1 :: Nat) - (a2 :: Nat)
type (a1 :: Nat) + (a2 :: Nat) Source # 
Instance details

Defined in Data.Nat

type (a1 :: Nat) + (a2 :: Nat)
type Min (arg :: Nat) (arg1 :: Nat) Source # 
Instance details

Defined in Data.Nat

type Min (arg :: Nat) (arg1 :: Nat) = Apply (Apply (Min_6989586621679380222Sym0 :: TyFun Nat (Nat ~> Nat) -> Type) arg) arg1
type Max (arg :: Nat) (arg1 :: Nat) Source # 
Instance details

Defined in Data.Nat

type Max (arg :: Nat) (arg1 :: Nat) = Apply (Apply (Max_6989586621679380204Sym0 :: TyFun Nat (Nat ~> Nat) -> Type) arg) arg1
type (arg :: Nat) >= (arg1 :: Nat) Source # 
Instance details

Defined in Data.Nat

type (arg :: Nat) >= (arg1 :: Nat) = Apply (Apply (TFHelper_6989586621679380186Sym0 :: TyFun Nat (Nat ~> Bool) -> Type) arg) arg1
type (arg :: Nat) > (arg1 :: Nat) Source # 
Instance details

Defined in Data.Nat

type (arg :: Nat) > (arg1 :: Nat) = Apply (Apply (TFHelper_6989586621679380168Sym0 :: TyFun Nat (Nat ~> Bool) -> Type) arg) arg1
type (arg :: Nat) <= (arg1 :: Nat) Source # 
Instance details

Defined in Data.Nat

type (arg :: Nat) <= (arg1 :: Nat) = Apply (Apply (TFHelper_6989586621679380150Sym0 :: TyFun Nat (Nat ~> Bool) -> Type) arg) arg1
type (arg :: Nat) < (arg1 :: Nat) Source # 
Instance details

Defined in Data.Nat

type (arg :: Nat) < (arg1 :: Nat) = Apply (Apply (TFHelper_6989586621679380132Sym0 :: TyFun Nat (Nat ~> Bool) -> Type) arg) arg1
type Compare (a1 :: Nat) (a2 :: Nat) Source # 
Instance details

Defined in Data.Nat

type Compare (a1 :: Nat) (a2 :: Nat)
type (x :: Nat) /= (y :: Nat) Source # 
Instance details

Defined in Data.Nat

type (x :: Nat) /= (y :: Nat) = Not (x == y)
type (a :: Nat) == (b :: Nat) Source # 
Instance details

Defined in Data.Nat

type (a :: Nat) == (b :: Nat)
type ShowsPrec a1 (a2 :: Nat) a3 Source # 
Instance details

Defined in Data.Nat

type ShowsPrec a1 (a2 :: Nat) a3
type Apply LitSym0 (n6989586621679094994 :: Nat) Source # 
Instance details

Defined in Data.Nat

type Apply LitSym0 (n6989586621679094994 :: Nat) = Lit n6989586621679094994
type Apply SSym0 (t6989586621679080960 :: Nat) Source # 
Instance details

Defined in Data.Nat

type Apply SSym0 (t6989586621679080960 :: Nat) = S t6989586621679080960

type family NatPlus (a :: Nat) (a :: Nat) :: Nat where ... Source #

Equations

NatPlus Z b = b 
NatPlus (S a) b = Apply SSym0 (Apply (Apply NatPlusSym0 a) b) 

type family NatMul (a :: Nat) (a :: Nat) :: Nat where ... Source #

Equations

NatMul Z _ = ZSym0 
NatMul (S a) b = Apply (Apply NatPlusSym0 b) (Apply (Apply NatMulSym0 a) b) 

type family NatMinus (a :: Nat) (a :: Nat) :: Nat where ... Source #

Equations

NatMinus Z _ = ZSym0 
NatMinus (S a) (S b) = Apply (Apply NatMinusSym0 a) b 
NatMinus a Z = a 

type family NatAbs (a :: Nat) :: Nat where ... Source #

Equations

NatAbs n = n 

type family NatSignum (a :: Nat) :: Nat where ... Source #

Equations

NatSignum Z = ZSym0 
NatSignum (S _) = Apply SSym0 ZSym0 

someNatVal :: Integer -> Maybe (SomeSing Nat) Source #

Converts a runtime Integer to an existentially wrapped Nat. Returns Nothing if the argument is negative

type SNat = (Sing :: Nat -> Type) Source #

data family Sing (a :: k) :: Type #

The singleton kind-indexed data family.

Instances
Eq (SNat n) Source # 
Instance details

Defined in Data.Nat

Methods

(==) :: SNat n -> SNat n -> Bool #

(/=) :: SNat n -> SNat n -> Bool #

Ord (SNat n) Source # 
Instance details

Defined in Data.Nat

Methods

compare :: SNat n -> SNat n -> Ordering #

(<) :: SNat n -> SNat n -> Bool #

(<=) :: SNat n -> SNat n -> Bool #

(>) :: SNat n -> SNat n -> Bool #

(>=) :: SNat n -> SNat n -> Bool #

max :: SNat n -> SNat n -> SNat n #

min :: SNat n -> SNat n -> SNat n #

ShowSing Nat => Show (Sing z) Source # 
Instance details

Defined in Data.Nat

Methods

showsPrec :: Int -> Sing z -> ShowS #

show :: Sing z -> String #

showList :: [Sing z] -> ShowS #

data Sing (a :: Bool) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (a :: Bool) where
data Sing (a :: Ordering) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (a :: Ordering) where
data Sing (n :: Nat) 
Instance details

Defined in Data.Singletons.TypeLits.Internal

data Sing (n :: Nat) where
data Sing (n :: Symbol) 
Instance details

Defined in Data.Singletons.TypeLits.Internal

data Sing (n :: Symbol) where
data Sing (a :: ()) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (a :: ()) where
data Sing (a :: Nat) Source # 
Instance details

Defined in Data.Nat

data Sing (a :: Nat) where
data Sing (a :: Void) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (a :: Void)
data Sing (a :: All) 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

data Sing (a :: All) where
data Sing (a :: Any) 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

data Sing (a :: Any) where
data Sing (b :: [a]) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (b :: [a]) where
  • SNil :: forall a (b :: [a]). Sing ([] :: [a])
  • SCons :: forall a (b :: [a]) (n1 :: a) (n2 :: [a]). Sing n1 -> Sing n2 -> Sing (n1 ': n2)
data Sing (b :: Maybe a) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (b :: Maybe a) where
data Sing (b :: Min a) 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

data Sing (b :: Min a) where
data Sing (b :: Max a) 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

data Sing (b :: Max a) where
data Sing (b :: First a) 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

data Sing (b :: First a) where
data Sing (b :: Last a) 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

data Sing (b :: Last a) where
data Sing (a :: WrappedMonoid m) 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

data Sing (a :: WrappedMonoid m) where
data Sing (b :: Option a) 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

data Sing (b :: Option a) where
data Sing (b :: Identity a) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (b :: Identity a) where
data Sing (b :: First a) 
Instance details

Defined in Data.Singletons.Prelude.Monoid

data Sing (b :: First a) where
data Sing (b :: Last a) 
Instance details

Defined in Data.Singletons.Prelude.Monoid

data Sing (b :: Last a) where
data Sing (b :: Dual a) 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

data Sing (b :: Dual a) where
data Sing (b :: Sum a) 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

data Sing (b :: Sum a) where
data Sing (b :: Product a) 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

data Sing (b :: Product a) where
data Sing (b :: Down a) 
Instance details

Defined in Data.Singletons.Prelude.Ord

data Sing (b :: Down a) where
data Sing (b :: NonEmpty a) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (b :: NonEmpty a) where
data Sing (b :: Endo a) 
Instance details

Defined in Data.Singletons.Prelude.Foldable

data Sing (b :: Endo a) where
data Sing (b :: MaxInternal a) 
Instance details

Defined in Data.Singletons.Prelude.Foldable

data Sing (b :: MaxInternal a) where
data Sing (b :: MinInternal a) 
Instance details

Defined in Data.Singletons.Prelude.Foldable

data Sing (b :: MinInternal a) where
data Sing (c :: Either a b) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (c :: Either a b) where
data Sing (c :: (a, b)) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (c :: (a, b)) where
data Sing (c :: Arg a b) 
Instance details

Defined in Data.Singletons.Prelude.Semigroup

data Sing (c :: Arg a b) where
newtype Sing (f :: k1 ~> k2) 
Instance details

Defined in Data.Singletons.Internal

newtype Sing (f :: k1 ~> k2) = SLambda {}
data Sing (b :: StateL s a) 
Instance details

Defined in Data.Singletons.Prelude.Traversable

data Sing (b :: StateL s a) where
  • SStateL :: forall s a (b :: StateL s a) (x :: s ~> (s, a)). Sing x -> Sing (StateL x)
data Sing (b :: StateR s a) 
Instance details

Defined in Data.Singletons.Prelude.Traversable

data Sing (b :: StateR s a) where
  • SStateR :: forall s a (b :: StateR s a) (x :: s ~> (s, a)). Sing x -> Sing (StateR x)
data Sing (d :: (a, b, c)) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (d :: (a, b, c)) where
data Sing (c :: Const a b) 
Instance details

Defined in Data.Singletons.Prelude.Const

data Sing (c :: Const a b) where
data Sing (e :: (a, b, c, d)) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (e :: (a, b, c, d)) where
data Sing (f :: (a, b, c, d, e)) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (f :: (a, b, c, d, e)) where
  • STuple5 :: forall a b c d e (f :: (a, b, c, d, e)) (n1 :: a) (n2 :: b) (n3 :: c) (n4 :: d) (n5 :: e). Sing n1 -> Sing n2 -> Sing n3 -> Sing n4 -> Sing n5 -> Sing ((,,,,) n1 n2 n3 n4 n5)
data Sing (g :: (a, b, c, d, e, f)) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (g :: (a, b, c, d, e, f)) where
  • STuple6 :: forall a b c d e f (g :: (a, b, c, d, e, f)) (n1 :: a) (n2 :: b) (n3 :: c) (n4 :: d) (n5 :: e) (n6 :: f). Sing n1 -> Sing n2 -> Sing n3 -> Sing n4 -> Sing n5 -> Sing n6 -> Sing ((,,,,,) n1 n2 n3 n4 n5 n6)
data Sing (h :: (a, b, c, d, e, f, g)) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (h :: (a, b, c, d, e, f, g)) where
  • STuple7 :: forall a b c d e f g (h :: (a, b, c, d, e, f, g)) (n1 :: a) (n2 :: b) (n3 :: c) (n4 :: d) (n5 :: e) (n6 :: f) (n7 :: g). Sing n1 -> Sing n2 -> Sing n3 -> Sing n4 -> Sing n5 -> Sing n6 -> Sing n7 -> Sing ((,,,,,,) n1 n2 n3 n4 n5 n6 n7)

class PNum a #

Instances
PNum Nat 
Instance details

Defined in Data.Singletons.Prelude.Num

Associated Types

type arg + arg1 :: a #

type arg - arg1 :: a #

type arg * arg1 :: a #

type Negate arg :: a #

type Abs arg :: a #

type Signum arg :: a #

type FromInteger arg :: a #

PNum Nat Source # 
Instance details

Defined in Data.Nat

Associated Types

type arg + arg1 :: a #

type arg - arg1 :: a #

type arg * arg1 :: a #

type Negate arg :: a #

type Abs arg :: a #

type Signum arg :: a #

type FromInteger arg :: a #

PNum (Down a) 
Instance details

Defined in Data.Singletons.Prelude.Num

Associated Types

type arg + arg1 :: a #

type arg - arg1 :: a #

type arg * arg1 :: a #

type Negate arg :: a #

type Abs arg :: a #

type Signum arg :: a #

type FromInteger arg :: a #

class SNum a #

Minimal complete definition

(%+), (%*), sAbs, sSignum, sFromInteger

Instances
SNum Nat 
Instance details

Defined in Data.Singletons.Prelude.Num

Methods

(%+) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (+@#@$) t1) t2) #

(%-) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (-@#@$) t1) t2) #

(%*) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (*@#@$) t1) t2) #

sNegate :: Sing t -> Sing (Apply NegateSym0 t) #

sAbs :: Sing t -> Sing (Apply AbsSym0 t) #

sSignum :: Sing t -> Sing (Apply SignumSym0 t) #

sFromInteger :: Sing t -> Sing (Apply FromIntegerSym0 t) #

SNum Nat Source # 
Instance details

Defined in Data.Nat

Methods

(%+) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (+@#@$) t1) t2) #

(%-) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (-@#@$) t1) t2) #

(%*) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (*@#@$) t1) t2) #

sNegate :: Sing t -> Sing (Apply NegateSym0 t) #

sAbs :: Sing t -> Sing (Apply AbsSym0 t) #

sSignum :: Sing t -> Sing (Apply SignumSym0 t) #

sFromInteger :: Sing t -> Sing (Apply FromIntegerSym0 t) #

SNum a => SNum (Down a) 
Instance details

Defined in Data.Singletons.Prelude.Num

Methods

(%+) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (+@#@$) t1) t2) #

(%-) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (-@#@$) t1) t2) #

(%*) :: Sing t1 -> Sing t2 -> Sing (Apply (Apply (*@#@$) t1) t2) #

sNegate :: Sing t -> Sing (Apply NegateSym0 t) #

sAbs :: Sing t -> Sing (Apply AbsSym0 t) #

sSignum :: Sing t -> Sing (Apply SignumSym0 t) #

sFromInteger :: Sing t -> Sing (Apply FromIntegerSym0 t) #

data SSym0 :: (~>) Nat Nat where Source #

Constructors

SSym0KindInference :: forall t6989586621679080960 arg. SameKind (Apply SSym0 arg) (SSym1 arg) => SSym0 t6989586621679080960 
Instances
SuppressUnusedWarnings SSym0 Source # 
Instance details

Defined in Data.Nat

SingI SSym0 Source # 
Instance details

Defined in Data.Nat

Methods

sing :: Sing SSym0 #

type Apply SSym0 (t6989586621679080960 :: Nat) Source # 
Instance details

Defined in Data.Nat

type Apply SSym0 (t6989586621679080960 :: Nat) = S t6989586621679080960

type SSym1 (t6989586621679080960 :: Nat) = S t6989586621679080960 Source #

type ZSym0 = Z Source #

type family Lit n where ... Source #

Provides a shorthand for Nat-s using GHC.TypeLits, for example:

>>> :kind! Lit 3
Lit 3 :: Nat
= 'S ('S ('S 'Z))

Equations

Lit 0 = Z 
Lit n = S (Lit (n - 1)) 

data LitSym0 :: (~>) Nat Nat where Source #

Constructors

LitSym0KindInference :: forall n6989586621679094994 arg. SameKind (Apply LitSym0 arg) (LitSym1 arg) => LitSym0 n6989586621679094994 
Instances
SuppressUnusedWarnings LitSym0 Source # 
Instance details

Defined in Data.Nat

type Apply LitSym0 (n6989586621679094994 :: Nat) Source # 
Instance details

Defined in Data.Nat

type Apply LitSym0 (n6989586621679094994 :: Nat) = Lit n6989586621679094994

type LitSym1 (n6989586621679094994 :: Nat) = Lit n6989586621679094994 Source #

type SLit n = Sing (Lit n) Source #

sLit :: forall (n :: Nat). SingI (Lit n) => Sing (Lit n) Source #

Shorthand for SNat literals using TypeApplications.

>>> :set -XTypeApplications
>>> sLit @5
SS (SS (SS (SS (SS SZ))))