Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 0.45 KB | None | 0 0
  1. let rec eval (vtab : SymTab) (e : EXP) : VALUE =
  2.   let apply op n m =
  3.     match (eval vtab n, eval vtab m) with
  4.       | (INT a, INT b) -> INT (op a b)
  5.   match e with
  6.    | CONSTANT v -> v
  7.    | VARIABLE v -> lookup v vtab
  8.    | ADD (n, m) -> apply (+) n m
  9.    | MULTIPLY (n, m) -> apply (*) n m
  10.    | SUBTRACT (n, m) -> apply (-) n m
  11.    | DIVIDE (n, m) -> apply (/) n m
  12.    | LET_IN (var, e', e) ->
  13.    let vtab = bind var (eval vtab e') vtab
  14.     eval vtab e
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement