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/Eval.hs | |
| parent | 7c30d211c3eda504668c0eab51e99d6e52db2127 (diff) | |
primitive pattern matching
Diffstat (limited to 'devel/compiler/Eval.hs')
| -rw-r--r-- | devel/compiler/Eval.hs | 13 |
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 |
