Simply-typed lambda calculus type inferer