module Implicit:sig
..end
type
exp =
| |
Int of |
(* | decimal integer | *) |
| |
Bool of |
(* | either true or false | *) |
| |
Arith of |
(* | e1 + e2 , e1 - e2 , or e1 * e2 | *) |
| |
Cmp of |
(* | e1 < e2 , e1 > e2 , or e1 = e2 | *) |
| |
If of |
(* | if e1 then e2 else e2 | *) |
| |
Id of |
(* | x , y , x1 , y1 , x_ , y_ , etc. | *) |
| |
Let of |
(* | let x = e1 in e2 | *) |
| |
Fun of |
(* | fun x -> e | *) |
| |
Fix of |
(* | fix x -> e | *) |
| |
App of |
(* | e1 e2 | *) |
| |
Empty |
(* | empty | *) |
| |
Cons of |
(* | e1 :: e2 | *) |
| |
Head of |
(* | head e | *) |
| |
Tail of |
(* | tail e | *) |
| |
IsEmpty of |
(* | empty? e | *) |
| |
Pair of |
(* | (e1, e2) | *) |
| |
ProjL of |
(* | e.1 | *) |
| |
ProjR of |
(* | e.2 | *) |