diff options
| author | aarne <aarne@cs.chalmers.se> | 2007-03-27 20:54:49 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2007-03-27 20:54:49 +0000 |
| commit | fd518ed2a3fe50238e0e9e7947e33cc9d5de9bce (patch) | |
| tree | 384d4e0a74cd0019dbf20394f2eeb9b83b24b1cc /devel/compiler/Env.hs | |
| parent | 7c30d211c3eda504668c0eab51e99d6e52db2127 (diff) | |
primitive pattern matching
Diffstat (limited to 'devel/compiler/Env.hs')
| -rw-r--r-- | devel/compiler/Env.hs | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/devel/compiler/Env.hs b/devel/compiler/Env.hs index d29b9a3a5..7e1d23983 100644 --- a/devel/compiler/Env.hs +++ b/devel/compiler/Env.hs @@ -11,13 +11,14 @@ data Env = Env { types :: M.Map Ident Type, opers :: M.Map Ident Exp, typedefs :: M.Map Ident Type, + parsizes :: M.Map Type Int, partypes :: M.Map Type [Exp], parvals :: M.Map Exp Val, vars :: M.Map Ident Val --- constrs :: M.Map Ident ([Int] -> Int) } -emptyEnv = Env M.empty M.empty M.empty M.empty M.empty M.empty M.empty +emptyEnv = Env M.empty M.empty M.empty M.empty M.empty M.empty M.empty M.empty lookEnv :: (Show i, Ord i) => (Env -> M.Map i a) -> i -> STM Env a lookEnv field c = do @@ -36,6 +37,9 @@ addOper c v = updateSTM (\env -> (env{opers = M.insert c v (opers env)})) addTypedef :: Ident -> Type -> STM Env () addTypedef c v = updateSTM (\env -> (env{typedefs = M.insert c v (typedefs env)})) +addParsize :: Type -> Int -> STM Env () +addParsize c v = updateSTM (\env -> (env{parsizes = M.insert c v (parsizes env)})) + addPartype :: Type -> [Exp] -> STM Env () addPartype c v = updateSTM (\env -> (env{partypes = M.insert c v (partypes env)})) |
