ivory-0.1.0.0: src/Ivory/Language/Syntax/Names.hs
{-# 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 ]