diff options
Diffstat (limited to 'src/compiler/GF/Compile/Compute/Value.hs')
| -rw-r--r-- | src/compiler/GF/Compile/Compute/Value.hs | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/compiler/GF/Compile/Compute/Value.hs b/src/compiler/GF/Compile/Compute/Value.hs index 07d79ca26..bbc751ee4 100644 --- a/src/compiler/GF/Compile/Compute/Value.hs +++ b/src/compiler/GF/Compile/Compute/Value.hs @@ -3,10 +3,11 @@ import GF.Grammar.Grammar(Label,Type,TInfo,MetaId,Patt,QIdent) import PGF.Data(BindType) import GF.Infra.Ident(Ident) import Text.Show.Functions +import Data.Ix(Ix) -- | Self-contained (not quite) representation of values data Value - = VApp QIdent [Value] -- from Q, always Predef.x, has a built-in value + = VApp Predefined [Value] -- from Q, always Predef.x, has a built-in value | VCApp QIdent [Value] -- from QC, constructors | VGen Int [Value] -- for lambda bound variables, possibly applied | VMeta MetaId Env [Value] @@ -22,7 +23,7 @@ data Value | VRecType [(Label,Value)] | VRec [(Label,Value)] | VV Type [Value] [Value] -- preserve type for conversion back to Term - | VT TInfo [(Patt,Bind Env)] + | VT Wild Value [(Patt,Bind Env)] | VC Value Value | VS Value Value | VP Value Label @@ -36,9 +37,19 @@ data Value | VError String deriving (Eq,Show) +type Wild = Bool type Binding = Bind Value data Bind a = Bind (a->Value) deriving Show instance Eq (Bind a) where x==y = False type Env = [(Ident,Value)] + +-- | Predefined functions +data Predefined = Drop | Take | Tk | Dp | EqStr | Occur | Occurs | ToUpper + | ToLower | IsUpper | Length | Plus | EqInt | LessInt + {- | Show | Read | ToStr | MapStr | EqVal -} + | Error + -- Canonical values below: + | PBool | PFalse | PTrue | Ints + deriving (Show,Eq,Ord,Ix,Bounded,Enum) |
