sig
  type id = string
  type field = string
  type exp =
      Int of int
    | Add of HOF_syntax.exp * HOF_syntax.exp
    | Sub of HOF_syntax.exp * HOF_syntax.exp
    | Mul of HOF_syntax.exp * HOF_syntax.exp
    | Let of HOF_syntax.id * HOF_syntax.exp * HOF_syntax.exp
    | Id of HOF_syntax.id
    | If0 of HOF_syntax.exp * HOF_syntax.exp * HOF_syntax.exp
    | Lambda of HOF_syntax.id list * HOF_syntax.exp
    | Apply of HOF_syntax.exp * HOF_syntax.exp list
    | Record of (HOF_syntax.field * HOF_syntax.exp) list
    | SetField of HOF_syntax.exp * HOF_syntax.field * HOF_syntax.exp
    | GetField of HOF_syntax.exp * HOF_syntax.field
end