mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-03 08:12:51 -06:00
primitive pattern matching
This commit is contained in:
@@ -4,11 +4,12 @@ import AbsSrc
|
||||
import AbsTgt
|
||||
import SMacros
|
||||
import TMacros
|
||||
|
||||
import ComposOp
|
||||
import STM
|
||||
import Match
|
||||
import Env
|
||||
|
||||
import STM
|
||||
|
||||
|
||||
eval :: Exp -> STM Env Val
|
||||
eval e = case e of
|
||||
EAbs x b -> do
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user