Advertisement
Guest User

IMP_Code_2

a guest
Jul 14th, 2014
256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Como me quedaron las cosas:
  2.  
  3. ...
  4. eval (Bin b e1 e2) = eval e1 >>= \res -> eval e2 >>= evalBin b res
  5. ...
  6. evalBin Lt  (VInt n1)  (VInt n2)   = return $ VBool (n1<n2)
  7. evalBin Gt  (VInt n1)  (VInt n2)   = return $ VBool (n1>n2)
  8. ...
  9. exec (Block sts)     = executeAll (map exec sts)
  10. exec (If ex st1 st2) = (eval ex >>= checkVBool) >>= (\cond -> if cond then exec st1 else exec st2)
  11. exec (While ex st)   = (eval ex >>= checkVBool) >>= (\cond -> if cond then (exec st) >>= (\v -> exec $ While ex st) else return ())
  12. ...
  13. executeAll :: [Interpreter ()] -> Interpreter ()
  14. executeAll []     = return ()
  15. executeAll (i:is) = i >>= (\v -> executeAll is)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement