Johann Hibschman wrote: >... > This seems like a strange distinction to make. If you demand writable > access to bindings to have a closure, then none of the > side-effect-free functional languages like Haskell have closures, and > that just seems wrong. I strongly agree. After all, closure is a term from the functional programming world and many functional programming languages do not have side-effects ... in particular I am thinking of the lambda calculus which is the basis for all of this terminology. "1. <programming> In a reduction system, a closure is a data structure that holds an expression and an environment of variable bindings in which that expression is to be evaluated. The variables may be local or global. Closures are used to represent unevaluated expressions when implementing functional programming languages with lazy evaluation. In a real implementation, both expression and environment are represented by pointers." The Ruby world should be careful not to redefine the term to try to make the checklist clean and simple. "Closures: Ruby yep, Python nope." > ... > As a user of both python and ruby, it seems more fair to me to say > that "Ruby has more powerful closures than python" or "Ruby has more > convenient closures than python", not that "Python doesn't have > closures." You could even say "there are things that Ruby closures allow that Python's do not...without workarounds." Whether these "things" arise in real code is a separate question. It would be informative if a Ruby advocate could present a few examples from the Ruby standard library that rely on mutable closures. Paul Prescod