Closure: http://en.wikipedia.org/wiki/Closure_%28computer_science%29
我还比较喜欢Microsoft的一段说明,位于链接http://msdn.microsoft.com/msdnmag/issues/07/09/BasicInstincts/Default.aspx?loc=zh中,查找“Lambda 表达式和变量提升

最早接触Closure是在学javascript, 前年还写了篇关于Closure对javascript内存泄露的文章http://www.blogjava.net/tim-wu/archive/2006/05/29/48729.html
一直以为这就是函数式语言的特性,顶多就是.net的委托和它有几分相识,
没想到现在Java7也要支持了,有兴趣的朋友可以去读读:
http://www.javac.info/
没细读,不知道Lambda在Java这种强类型检查的语言中表现的如何。

作为函数语言,Ruby中一直都有closure的用法,http://samdanielson.com/2007/3/19/proc-new-vs-lambda-in-ruby有个简单例子。

def foo
  f 
= Proc.new { return "return from foo from inside proc" }
  f.call # control leaves foo here
  return 
"return from foo" 
end

def bar
  f 
= lambda { return "return from lambda" }
  f.call # control does 
not leave bar here
  return 
"return from bar" 
end

puts foo # prints 
"return from foo from inside proc" 
puts bar # prints 
"return from bar"

 最近,ruby 1.9又提供了新的定义lambda

= ->{puts "Hello Lambda"
参见 http://www.infoq.com/cn/news/2008/01/new-lambda-syntax

VB 2008也支持了,这个链接有个例子,又是Lambda,又是范型,,又是委托回调,很有意思:
http://msdn.microsoft.com/msdnmag/issues/07/09/BasicInstincts/Default.aspx?loc=zh
VB中“需要注意的一点限制是,lambda 表达式完全就是一个单个表达式。在 Visual Basic 2008 中,您在 lambda 表达式中只能有一个单个表达式。在本专栏中,我将进一步向您展示 Visual Basic 2008 中引入的一个新的三元运算符,它将允许您构造条件表达式,但目前的功能不支持在 lambda 表达式中使用任意语句。”