Closure and, to a lesser extent, lambda are difficult to describe, but __implementation__ is easy to understand. http://martinfowler.com/bliki/Closure.html and the wikipedia article are good. Here is my own learning notes and phrase book.
anonymous — an lambda expression is an anonymous function. Simple anonymous functions are handy in many contexts — you know it after you learn to use the technique.
* free — a lambda function always has input variables. It’s like a math function. These variables are by-default “free”. See python lambdas.
* bound — a closure is a lambda with its variables bound to something in the lexical environment
C# delegate? The anonymous delegate might be a lambda.
java — anon inner class offers many features of closure. I feel it’s a reasonable (not the standard) illustration of closure. http://martinfowler.com/bliki/Closure.html explains why it’s Unpopular.
C++ functor — Can’t access a variable in the enclosing “lexical-scope”, so not a closure
value — To the end-programmer, a closure (lambda too) appears to be a VALUE you can pass around, and assign to variables. Stateful object.
stateful — I feel closure is usually stateful; lambda is usually stateless
Garbage-collection — a closure holds almost-permanent references to “variables” (not just objects) in the lexical env, so those variables must not be auto/stack variables. You usually need a GC-powered language.
Many languages’ syntax use the keyword “lambda” to cover both lambda and closures. Reason? I feel lambda vs closure syntax (and implementation) is closely related, and end-programmer will welcome a simplified and unified syntax.
Note closure and lambda are not data types. An end-programmer is forgiven to say closure and lambda are simple flow-control constructs just like a for-loop or if-else. You can point to a chunk of source code and say it’s a closure — or you can say it’s an example-of-closure-Pattern. If I must use a single word each, I would say
* a lambda is a kind of …. function
* a closure is a kind of ….. stateful function
—– confusing/non-trivial jargon to avoid if they don’t help your learning — you can safely skip them