>>>>> "DT" == Dave Thomas <Dave / PragmaticProgrammer.com> writes:
    DT> I've been following the 'my' variable thread with a lot of interest
    DT> (and have even started a couple of sub-threads of my own).

As the one who started the "'my' variable thread" let me throw in my 2 cents:-)

No double that Ruby is a great language. Also without any doubt Ruby is not
perfect (nobody is perfect:-). The real art of raising and developing a language
is to carefully balance simplicity and managed complexity on one hand side and
the feature-set on another. There are features one can leave without and there
are ones one must have. And not having right basic features can lead to major
disasters. One language which I admire is Scheme. It did not catch on for
variety of reasons but it carries a legacy of a minimal set of concepts every
descent scripting language must have.  Perl was an ad hoc attempt on a language
design which neglected enough of established wisdom to fail in the design area.
Python and Ruby were born in part from a distaste about Perl's shortcomings.

I really do not want to see Ruby falling into the same trap. 
Proper lexical scops is a very well established concept and judging by the
volume in 'my' variable thread people on the list consider it emportant enough
to care about (including Mr.Ruby himself).
As a entusiastic Ruby programmer I can live by without many other features,
but proper lexical scoping (at least as an option) is very high on my wish list. 

Declaritive syntax like Scheme's (let (...) ...) is good enough!

For example:

n  = 0
my = 1
(1..100).each \
{
  <my,local,vars,declared,here>
  |n|
  my += n
  # ....
}
n  # -> 10  #side effect, 'n' was overriden within the block
my # -> 1   #still old value, not affected by block-local var. of the same name



    DT> It's also OK to be messy sometimes :)

Ya, right!

--Leo

P.S. Thanks to everyone who participated in the 'my' variable thread. Sorry for
     involuntary associations with Perl.