Module Bin_shape_lib.Bin_shape.Canonical.Create

val annotate : Uuid.t ‑> Exp.t ‑> Exp.t

Create.create defs exp constructs a canonical-shape. The defs give context for sub-expressions of the form: apply n exps; n being a reference to the n'th definition in defs.

Definition are required for records and variants, but may also occurs for any cyclic expression: in this case being constructed using define.

Within a definition body, var i refers to the i'th formal type-var, and corresponds to the i'the argument of an application args.

val basetype : Uuid.t ‑> Exp.t list ‑> Exp.t
val tuple : Exp.t list ‑> Exp.t
val poly_variant : Location.t ‑> (string * Exp.t option) list ‑> Exp.t
val var : int ‑> Exp.t
val apply : Def.t ‑> Exp.t list ‑> Exp.t
val recurse : int ‑> Exp.t list ‑> Exp.t
val define : Exp.t ‑> Def.t
val record : (string * Exp.t) list ‑> Exp.t
val variant : (string * Exp.t list) list ‑> Exp.t
val create : Exp.t ‑> t