{-# LANGUAGE TemplateHaskell #-}

{- |

Module      :  Type.Digits.Stage1
Copyright   :  (c) The University of Kansas 2011
License     :  BSD3

Maintainer  :  nicolas.frisby@gmail.com
Stability   :  experimental
Portability :  see LANGUAGE pragmas (... GHC)

Type-level numerals built from type-level digits of an arbitrary radix.

-}
module Type.Digits.Stage1 where

import Type.Digits.Aux (digitStrings)
import Type.Digits.Stage0
import Type.Spine.TH (liftNameG_d)

import Language.Haskell.TH



digitNames :: [Name]
digitNames = $(listE $ [ liftNameG_d n | n <- map mkName digitStrings ])

digitTypes :: [Type]
digitTypes = map PromotedT digitNames

digitStopName :: Name
digitStopName = 'DigitStop

digitStopType :: Type
digitStopType = PromotedT digitStopName