>>>>> "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.