implement Access eval

This commit is contained in:
darkf 2013-10-29 02:09:18 -07:00
parent ee9609471d
commit c311d22c85
1 changed files with 10 additions and 0 deletions

View File

@ -285,6 +285,16 @@ eval (NotEquals l r) = do { l <- eval l; r <- eval r; return $ l !=$ r }
eval (LessThan l r) = do { l <- eval l; r <- eval r; return $ l <$ r }
eval (GreaterThan l r) = do { l <- eval l; r <- eval r; return $ l >$ r }
eval (Access left (Var right)) = do
lhs <- eval left
case lhs of
DictV dict ->
case M.lookup (StrV right) dict of
Just v -> return v
Nothing -> return $ TupleV [StrV "nothing"]
_ -> error $ "op/: need a dict, got " ++ show lhs
eval (Access _ _) = error "op/: RHS must be an identifier"
eval (Call lhs arg) = do
(h,env) <- get
v <- eval lhs