a simple expression language with a type inference