A fairly comprehensive introduction to Lamda Calculus.
If you are new to this whole topic .. here is a short summary:
* Calculus: This word sounds scary but simply means “a system of calculation and reasoning”. Due to historical reasons, in mathematics we end up using greek symbols that have certain meaning. — Hence the ‘lambda’.
* Lambda Calclus provides a system for computation where the key basis is that ‘functions’ do not have side effects.
* Side-Effects? In a language like Java/C#, every time you call a function it “returns” a result based on the parameters. This result may change the internal state and hence can return a different result each time it is called.
* No Side-Effects? In Lambda calculus, there is no ‘return’ value. Rather, the function (and the parameters) are reduced to compute the answer. What this implies is that every time you call a function it will yield the exact same answer. No magical change is state.
Why is this useful? A number of functional languages like Haskell and Lisp use this calculus as their theoritical basis.
The real key concept to take away from this whole ‘calculus’ is know if your functions are side-effect free. Why? Because it makes testing easier. Also, allows you to split functions across multiple machines/cores allowing parallel processing — the magic behind Google, Yahoo, Facebook etc.
The formal rigour is rather dry — but once you get it, there are quite a lot of applications. Also, it is one of those things that stays with you for a long time.