content: {-# LANGUAGE Safe #-}
  {-# LANGUAGE ExplicitNamespaces #-}
  {-# LANGUAGE PatternSynonyms #-}
  {-# LANGUAGE TypeOperators #-}
  {-# LANGUAGE NoStarIsType #-}
  
  -- |
  --
  -- GHC's @DataKinds@ language extension lifts data constructors, natural
  -- numbers, and strings to the type level. This module provides the
  -- primitives needed for working with type-level numbers (the 'Nat' kind),
  -- strings (the 'Symbol' kind), and characters (the 'Char' kind). It also defines the 'TypeError' type
  -- family, a feature that makes use of type-level strings to support user
  -- defined type errors.
  --
  -- For now, this module is the API for working with type-level literals.
  -- However, please note that it is a work in progress and is subject to change.
  -- Once the design of the @DataKinds@ feature is more stable, this will be
  -- considered only an internal GHC module, and the programmer interface for
  -- working with type-level data will be defined in a separate library.
  --
  -- @since 4.6.0.0
  --
  
  module GHC.TypeLits
      (-- *  Kinds
       Natural,
       Nat,
       Symbol,
       -- *  Linking type and value level
       KnownNat(natSing),
       natVal,
       natVal',
       KnownSymbol(symbolSing),
       symbolVal,
       symbolVal',
       KnownChar(charSing),
       charVal,
       charVal',
       SomeNat(..),
       SomeSymbol(..),
       SomeChar(..),
       someNatVal,
       someSymbolVal,
       someCharVal,
       sameNat,
       sameSymbol,
       sameChar,
       decideNat,
       decideSymbol,
       decideChar,
       OrderingI(..),
       cmpNat,
       cmpSymbol,
       cmpChar,
       -- **  Singleton values
       SNat,
       SSymbol,
       SChar,
       pattern SNat,
       pattern SSymbol,
       pattern SChar,
       fromSNat,
       fromSSymbol,
       fromSChar,
       withSomeSNat,
       withSomeSSymbol,
       withSomeSChar,
       withKnownNat,
       withKnownSymbol,
       withKnownChar,
       -- *  Functions on type literals
       type (<=),
       type (<=?),
       type (+),
       type (*),
       type (^),
       type (-),
       type Div,
       type Mod,
       type Log2,
       AppendSymbol,
       CmpNat,
       CmpSymbol,
       CmpChar,
       ConsSymbol,
       UnconsSymbol,
       CharToNat,
       NatToChar,
       -- *  User-defined type errors
       TypeError,
       ErrorMessage(..)
       ) where
  
  import GHC.Internal.TypeLits
  