First up, an apology: I missed your talk at Devoxx yesterday as I was next door listening to John Smart talk about testing.
And now for the question: What is the difference between a Lambda and a Closure?
I thought I knew the answer to this but listening to Peter Ledbrook this afternoon talk about Groovy, he threw up some code on the screen, at which I though "oh yes, that's a Lambda expression", only for him to say "but this isn't a Lambda, it's a Closure". Now I'm a little confused over the distinction.
A closure is a construct in which a function (possibly a lambda) is combined with variables that are not within local scope.
This method returns a function that adds x to y. The function itself (in this case a lambda) references a variable that's not within its local scope (x). When you call the plus() method, that's when you create a closure that binds a value to x within the lambda.
y -> x+y is a lambda.
plus(3) creates a closure.
The mind is a strange and wonderful thing. I'm not sure that it will ever be able to figure itself out, everything else, maybe. From the atom to the universe, everything, except itself.