AlastairL Thanks for your valuable comments.
Actually, my original comments was not on capabilities of Lambda function but on Let function ( may be my comments was a bit misleading). I really don't know how the Let function is implemented and I don't understand how a name reassignment is going to impact internal implementation. I know a Referential Transparency purist will argue against reassignment of variable. But I thought reassignment would make the name to refer new value and there is no way to modify previous value. So I thought that a reassignment of a local name is not going to leave any side effect nor does it impact the purity of the function.( sorry I didn't get a chance to read through the documentation referred by you).But my understanding is that if the only purpose of let function is to enhance code readability it is good that it restricts reassignment of name. Anyway, I can get my job done by assigning to new name instead of reassignment.
Regarding Lambda function I absolutely agree that it enforces all principles of functional programming of which two are my favourite-function as param as well as return value and recursion..Thanks