> 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?