type term = | TLam of term * term | TApp of term * term | TAlt of term * term | TVar of string | TInt of int | TCons of string type immediate = | ILam of pat * immediate | IApp of immediate * immediate | IAlt of immediate * immediate | IInt of int | IVar of int | IGlobal of string | ICons of string and pat = | PTuple of string * pat list | PHole of int and value = | VInt of int | VTuple of string * value list | VClos of env * pat * immediate * ((value -> value) -> value) and env = value list