csci2041/public-class-repo/SamplePrograms/Sec_01_1:25pm/eval.ml
Michael Zhang 399845160c
f
2018-01-29 17:35:31 -06:00

33 lines
602 B
Standard ML

type expr
= Add of expr * expr
| Sub of expr * expr
| Mul of expr * expr
| Div of expr * expr
| Lt of expr * expr
| Eq of expr * expr
| And of expr * expr
| Not of expr
| If of expr * expr * expr
| Let of string * expr * expr
| Id of string
| App of expr * expr
| Lambda of string * expr
| Value of value
and value
= Int of int
| Bool of bool
|
(* let add = fun x -> fun y -> x + y
let add x y = x + y *)
let add = Lambda ("x", Lambda( "y", Add (Id "x", Id "y")))
let inc = Lambda ("x", Add (Id "x", Value (Int 1)))
let two = App inc (Value (Int 1))