| 14 |
type tpat = Patterns.node |
type tpat = Patterns.node |
| 15 |
type ttyp = Types.node |
type ttyp = Types.node |
| 16 |
|
|
| 17 |
type texpr = { loc : Location.loc; |
type texpr = { exp_loc : Location.loc; |
| 18 |
mutable exp_typ : Types.descr; |
mutable exp_typ : Types.descr; |
| 19 |
exp_descr : texpr'; |
exp_descr : texpr'; |
|
fv : string list |
|
| 20 |
} |
} |
| 21 |
and texpr' = |
and texpr' = |
| 22 |
(* CDuce is a Lambda-calculus ... *) |
(* CDuce is a Lambda-calculus ... *) |
| 37 |
and abstr = { |
and abstr = { |
| 38 |
fun_name : string option; |
fun_name : string option; |
| 39 |
fun_iface : (ttyp * ttyp) list; |
fun_iface : (ttyp * ttyp) list; |
| 40 |
fun_body : branches |
fun_body : branches; |
| 41 |
|
fun_typ : Types.descr; |
| 42 |
|
fun_fv : string list; |
| 43 |
} |
} |
| 44 |
|
|
| 45 |
and branches = branch list |
and branches = branch list |
| 46 |
and branch = |
and branch = |
| 47 |
{ mutable used : bool; |
{ mutable br_used : bool; |
| 48 |
mutable br_typ : Types.descr; |
mutable br_typ : Types.descr; (* TODO: move to branches and update *) |
| 49 |
br_pat : tpat; |
br_pat : tpat; |
| 50 |
br_body : texpr } |
br_body : texpr } |
| 51 |
|
|