Description
This module is an internal GHC module. It declares the constants used in the implementation of type-level natural numbers. The programmer interface for workin with type-level naturals should be defined in a separate library.
KindsThis is the *kind* of type-level natural numbers.
This is the *kind* of type-level symbols.
Linking type and value levelThe class SingI
provides a "smart" constructor for singleton types. There are built-in instances for the singleton types corresponding to type literals.
class kparam ~ Kind => SingE kparam rep | kparam -> rep whereSource
A class that converts singletons of a given kind into values of some representation type (i.e., we forget the extra information carried by the singletons, and convert them to ordinary values).
Note that fromSing
is overloaded based on the kind of the values and not their type---all types of a given kind are processed by the same instances.
class (SingI a, SingE (Kind :: k) rep) => SingRep a rep | a -> repSource
A convenience class, useful when we need to both introduce and eliminate a given singleton value. Users should never need to define instances of this classes.
unsafeSingNat :: Integer -> Sing (n :: Nat)Source
unsafeSingSymbol :: String -> Sing (n :: Symbol)Source
A type synonym useful for passing kinds as parameters.
Working with singletonswithSing :: SingI a => (Sing a -> b) -> bSource
A convenience function useful when we need to name a singleton value multiple times. Without this function, each use of sing
could potentially refer to a different singleton, and one has to use type signatures to ensure that they are the same.
singThat :: SingRep a rep => (rep -> Bool) -> Maybe (Sing a)Source
A convenience function that names a singleton satisfying a certain property. If the singleton does not satisfy the property, then the function returns Nothing
. The property is expressed in terms of the underlying representation of the singleton.
Comparsion of type-level naturals.
type family m (<=?) n :: BoolSource
type family m (+) n :: NatSource
Addition of type-level naturals.
type family m (*) n :: NatSource
Multiplication of type-level naturals.
type family m (^) n :: NatSource
Exponentiation of type-level naturals.
Destructing type-nats.isZero :: Sing n -> IsZero nSource
isEven :: Sing n -> IsEven nSource
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4