summaryrefslogtreecommitdiff
path: root/devel/compiler/Eval.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/Eval.hs
parent7c30d211c3eda504668c0eab51e99d6e52db2127 (diff)
primitive pattern matching
Diffstat (limited to 'devel/compiler/Eval.hs')
-rw-r--r--devel/compiler/Eval.hs13
1 files changed, 8 insertions, 5 deletions
diff --git a/devel/compiler/Eval.hs b/devel/compiler/Eval.hs
index cc1b22467..b59fb53f2 100644
--- a/devel/compiler/Eval.hs
+++ b/devel/compiler/Eval.hs
@@ -4,10 +4,11 @@ import AbsSrc
import AbsTgt
import SMacros
import TMacros
+import Match
+import Env
-import ComposOp
import STM
-import Env
+
eval :: Exp -> STM Env Val
eval e = case e of
@@ -38,11 +39,13 @@ eval e = case e of
vs <- mapM eval [e | FExp _ e <- fs]
return $ VRec vs
- ETab cs -> do
- vs <- mapM eval [e | Cas _ e <- cs] ---- expand and pattern match
+ ETab ty cs -> do
+-- sz <- lookEnv parsizes ty
+-- let ps = map (VPar . toInteger) [0..sz-1]
+ ps <- lookEnv partypes ty
+ vs <- mapM (\p -> match cs p >>= eval) ps
return $ VRec vs
-
ESel t v -> do
t' <- eval t
v' <- eval v