The Lambda Calculus Its Syntax and Semantics by Henk Barendregt