summaryrefslogtreecommitdiff
path: root/devel/compiler/Env.hs
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2007-03-27 20:54:49 +0000
committeraarne <aarne@cs.chalmers.se>2007-03-27 20:54:49 +0000
commitfd518ed2a3fe50238e0e9e7947e33cc9d5de9bce (patch)
tree384d4e0a74cd0019dbf20394f2eeb9b83b24b1cc /devel/compiler/Env.hs
parent7c30d211c3eda504668c0eab51e99d6e52db2127 (diff)
primitive pattern matching
Diffstat (limited to 'devel/compiler/Env.hs')
-rw-r--r--devel/compiler/Env.hs6
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)}))