Sarek_tag_erasureval is_variant_ty : Sarek_types.typ -> boolval map_desc :
(Sarek_typed_ast.texpr -> Sarek_typed_ast.texpr) ->
Sarek_typed_ast.texpr_desc ->
Sarek_typed_ast.texpr_descval iter_children :
(Sarek_typed_ast.texpr -> unit) ->
Sarek_typed_ast.texpr ->
unitval map_children :
(Sarek_typed_ast.texpr -> Sarek_typed_ast.texpr) ->
Sarek_typed_ast.texpr ->
Sarek_typed_ast.texprval is_slot_var : int -> Sarek_typed_ast.texpr -> boolval is_reducible_payload : Sarek_typed_ast.tpattern option -> boolval is_ctor_case :
string ->
(Sarek_typed_ast.tpattern * Sarek_typed_ast.texpr) ->
boolval arm_matches_ctor :
string ->
(Sarek_typed_ast.tpattern * Sarek_typed_ast.texpr) ->
boolval ctor_arm_reachable :
string ->
(Sarek_typed_ast.tpattern * Sarek_typed_ast.texpr) list ->
boolval uses_all_reducible : int -> string -> Sarek_typed_ast.texpr -> boolval subst_var :
int ->
Sarek_typed_ast.texpr ->
Sarek_typed_ast.texpr ->
Sarek_typed_ast.texprval reduce_matches :
int ->
string ->
(unit -> Sarek_typed_ast.texpr) option ->
Sarek_typed_ast.texpr ->
Sarek_typed_ast.texprval is_scalar_prim : Sarek_types.typ -> boolval typ_tag : Sarek_types.typ -> stringtype field_plan = | FKeep of int * Sarek_types.typkept scalar field -> positional slot, its type
*)| FUnary of int * Sarek_types.typ * stringerased unary field -> slot, payload type, constructor name
*)| FNullary of stringerased nullary field -> dropped, constructor name
*)val plan_fields :
(string * Sarek_typed_ast.texpr) list ->
(string * field_plan) list optionval variant_field_ctor : (string * field_plan) list -> string -> string optionval field_read_of : int -> Sarek_typed_ast.texpr -> string optionval record_body_eligible :
int ->
(string * field_plan) list ->
Sarek_typed_ast.texpr ->
booltype rec_ctx = {rc_rid : int;rc_rname : string;rc_synth_ty : Sarek_types.typ;rc_plan : (string * field_plan) list;rc_loc : Sarek_ast.loc;}val find_ctor_arm :
string ->
(Sarek_typed_ast.tpattern * Sarek_typed_ast.texpr) list ->
Sarek_typed_ast.tpattern option * Sarek_typed_ast.texprval mk_field_read : rec_ctx -> int -> Sarek_types.typ -> Sarek_typed_ast.texprval try_erase_record :
rec_ctx list ->
string ->
int ->
Sarek_typed_ast.texpr ->
Sarek_typed_ast.texpr ->
Sarek_ast.loc ->
Sarek_typed_ast.texpr optionval descend : rec_ctx list -> Sarek_typed_ast.texpr -> Sarek_typed_ast.texprval erase_record_fields : Sarek_typed_ast.texpr -> Sarek_typed_ast.texprval rewrite_body : Sarek_typed_ast.texpr -> Sarek_typed_ast.texprval transform_body : Sarek_typed_ast.texpr -> Sarek_typed_ast.texprval erase_tags : Sarek_typed_ast.tkernel -> Sarek_typed_ast.tkernel