Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let rec eval (e:Expr) (env:Map<string, int>) : int =
- match e with
- | Const(a) -> a
- | Ident(id) -> env |> Map.find(id)
- | Neg(a) -> (env |> eval a)
- | Sum(a, b) -> (env |> eval a) + (env |> eval b)
- | Diff(a, b) -> (env |> eval a) - (env |> eval b)
- | Prod(a, b) -> (env |> eval a) * (env |> eval b)
- | Div(a, b) -> (env |> eval a) / (env |> eval b)
- | DivRem(a, b) -> (env |> eval a) % (env |> eval b)
- | Let(id, a, b) ->
- let nmap = Map.add id (env |> eval a) env
- (nmap |> eval b)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement