From: Yukihiro Matsumoto Date: 2005-08-05T14:58:04+09:00 Subject: Re: new block notation (was: Re: ruby-dev summary 26468-26661) Hi, In message "Re: new block notation (was: Re: ruby-dev summary 26468-26661)" on Fri, 5 Aug 2005 11:44:23 +0900, Florian Gro� writes: |This is probably the wrong place to ask, but is there resources that |explain the evolution of Ruby's design in detail? It is something that I |find very interesting. I don't think so. Google on ruby-talk may give you some information. Or, ask me. I will answer you, if I could have some spare time. |I think that the check is not strictly necessary in blocks. I guess it |could be argued about if it is necessary to have it for lambdas. | |Or can we just add the check to all blocks and lambdas? This would mean |that multiple assignment semantics are totally gone and that [1, 2, |3].each_with_index { |x| p x } would no longer work which might be a |good thing, anyway. | |Ignoring values has been troublesome even with multiple assignment |because of the array assignment effect anyway. Don't misunderstand me. Blocks will remain blocks. I just want to make lambdas real anonymous functions. Current lambdas are sort of "faked anonymous functions" mostly due to its handling of arguments (and local-exit). |Here's another try to come up with an alternative: | |[1, 2, 3].inject { |a| a } # => 1 |[1, 2, 3].inject { |*a| a } # => [[1, 2], 3] |I think both would eventually not produce warnings. The first could |still emit a warning for a short period to get users used to the change. Again, this issue is not related to block behavior. matz.