Combinatory Logic: Pure, Applied and Typed (Discrete Mathematics and Its Applications)