Compiler.Ast
type ast =
| Let of Types.ty * string * string list * ast * ast
| LetRec of Types.ty * string * string list * ast * ast
| App of Types.ty * string * ast list
| Fun of Types.ty * string * ast
| Sequence of Types.ty * ast list
| IntLit of Types.ty * int
| FloatLit of Types.ty * float
| StringLit of Types.ty * string
| BoolLit of Types.ty * bool
| List of Types.ty * ast list
| If of Types.ty * ast * ast * ast
| Eq of Types.ty * ast * ast
| Less of Types.ty * ast * ast
| Greater of Types.ty * ast * ast
| Plus of Types.ty * ast * ast
| Minus of Types.ty * ast * ast
| Times of Types.ty * ast * ast
| Div of Types.ty * ast * ast
| Cons of Types.ty * ast * ast
| Append of Types.ty * ast * ast
val string_of_ast : ast -> string