An Introduction to Functional Programming Through Lambda Calculus