Module Compiler.Ast

type ast =
  1. | Let of Types.ty * string * string list * ast * ast
  2. | LetRec of Types.ty * string * string list * ast * ast
  3. | App of Types.ty * string * ast list
  4. | Fun of Types.ty * string * ast
  5. | Sequence of Types.ty * ast list
  6. | IntLit of Types.ty * int
  7. | FloatLit of Types.ty * float
  8. | StringLit of Types.ty * string
  9. | BoolLit of Types.ty * bool
  10. | List of Types.ty * ast list
  11. | If of Types.ty * ast * ast * ast
  12. | Eq of Types.ty * ast * ast
  13. | Less of Types.ty * ast * ast
  14. | Greater of Types.ty * ast * ast
  15. | Plus of Types.ty * ast * ast
  16. | Minus of Types.ty * ast * ast
  17. | Times of Types.ty * ast * ast
  18. | Div of Types.ty * ast * ast
  19. | Cons of Types.ty * ast * ast
  20. | Append of Types.ty * ast * ast
val string_of_ast : ast -> string