(* AST *)

type comp = AstT.comp

type binop = AstT.binop

type unop = AstT.unop

type cst = AstT.cst

type path = string

type fargs = (bool*path) list

type program = elt list

and elt =
  | LetIgnore of expr
  | Let of path * fargs * expr

and expr =
  | Cst of cst
  | Var of path
  | App of path * ((bool*expr) list)
  | Ref of expr
  | Binop of binop * expr * expr
  | Unop of unop * expr
  | IfThenElse of expr * expr * expr
  | LetIn of path * expr * expr
  | MatchWith of expr * expr * path * path * expr

