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