datatype term =
| TMvar of string | TMlam of (string, term) | TMapp of (term, term) | TMint of int
| TMbool of bool
| TMopr of (string , termlst)
| TMif of (term, term, term)
| TMlet of (string, term, term)
where termlst = list0 (term)
fun fprint_term (out: FILEref, t: term): void
fun fprint_termlst (out: FILEref, t: termlst): void
fun print_term (t: term): void
overload print with print_term
fun prerr_term (t: term): void
overload prerr with prerr_term
fun subst0 (t: term, x: string, v: term): term
fun eval0 (t: term): term
fun genNumeral (n: int): term
fun print_numeral (n: term): void