content: ----------------------------------------------------------------------
  -- |
  -- Module      : Values
  -- Maintainer  : AR
  -- Stability   : (stable)
  -- Portability : (portable)
  --
  -- > CVS $Date: 2005/04/21 16:22:32 $
  -- > CVS $Author: bringert $
  -- > CVS $Revision: 1.7 $
  --
  -- (Description of the module)
  -----------------------------------------------------------------------------
  
  module GF.Grammar.Values (
                 -- ** Values used in TC type checking
                 Val(..), Env,
                 -- ** Annotated tree used in editing
                 Binds, Constraints, MetaSubst,
                 -- ** For TC
                 valAbsInt, valAbsFloat, valAbsString, vType,
                 isPredefCat,
                 eType,
                ) where
  
  import GF.Infra.Ident
  import GF.Grammar.Grammar
  import GF.Grammar.Predef
  
  -- values used in TC type checking
  
  data Val = VGen Int Ident | VApp Val Val | VCn QIdent | VRecType [(Label,Val)] | VType | VClos Env Term
    deriving (Eq,Show)
  
  type Env = [(Ident,Val)]
  
  type Binds = [(Ident,Val)]
  type Constraints = [(Val,Val)]
  type MetaSubst = [(MetaId,Val)]
  
  
  -- for TC
  
  valAbsInt :: Val
  valAbsInt = VCn (cPredefAbs, cInt)
  
  valAbsFloat :: Val
  valAbsFloat = VCn (cPredefAbs, cFloat)
  
  valAbsString :: Val
  valAbsString = VCn (cPredefAbs, cString)
  
  vType :: Val
  vType = VType
  
  eType :: Term
  eType = Sort cType
  