|
|
|
@ -13,6 +13,8 @@ let rec translate_type (ty : ML.typ) : P.typ =
|
|
|
|
|
P.TyProduct (List.map self tys)
|
|
|
|
|
| ML.TyConstr (_, lbl, tys) ->
|
|
|
|
|
P.TyConstr (lbl, List.map self tys)
|
|
|
|
|
| ML.TyEq (_, ty1, ty2) ->
|
|
|
|
|
P.TyEq (self ty1, self ty2)
|
|
|
|
|
|
|
|
|
|
let print_type (ty : ML.typ) =
|
|
|
|
|
Printer.print_type (translate_type ty)
|
|
|
|
@ -44,6 +46,10 @@ let rec translate_term (t : ML.term) : P.term =
|
|
|
|
|
P.Variant (lbl, None, Option.map self t)
|
|
|
|
|
| ML.Match (_, t, brs) ->
|
|
|
|
|
P.Match (None, self t, List.map translate_branch brs)
|
|
|
|
|
| ML.Eq _ ->
|
|
|
|
|
P.Eq
|
|
|
|
|
| ML.Use (_, t1, ty1, t2) ->
|
|
|
|
|
P.Use (self t1, translate_type ty1, self t2)
|
|
|
|
|
|
|
|
|
|
and translate_branch (pat, t) =
|
|
|
|
|
(translate_pattern pat, translate_term t)
|
|
|
|
|