> I like (2) better as well. How about changing Prim to
>
> | IntPrim of {prim: Prim.t,
> args: Var.t vector,
> overflow: Label.t, (* Must be nullary. *)
> success: Label.t (* Must be nullary or unary. *)
> }
Do you really mean success to have nullary or unary? Or is it just left
over from cut-and-paste?