{-# LANGUAGE TemplateHaskell #-} module Ivory.Language.Syntax.Names where import Language.Haskell.TH.Lift (deriveLiftMany) -- Public Symbols -------------------------------------------------------------- -- | Symbol names. type Sym = String -- Names ----------------------------------------------------------------------- -- | Variable names. data Var = VarName String -- ^ Names | VarInternal String -- ^ Internal names | VarLitName String -- ^ A literal name that should not be mangled deriving (Show,Eq,Ord) -- Special Names --------------------------------------------------------------- -- | The name for the return value named in an ensures statement. retval :: Var retval = VarInternal "retval" -- TH Lifting ------------------------------------------------------------------ deriveLiftMany [ ''Var ]