>> To a large extent, my reaction to all of these examples > comes > >> down, as > >> it often does, to the question: how would I explain this > to > >> someone to > >> whom I was teaching Ruby (in person or in writing)? I > think > >> I would > >> find it quite difficult to explain that in this: > >> > >> s = "hi" > >> t = s > >> (s) = "bye" > > > > I think this is a good example to show the difference. > > Programmers need to understand the difference shown above. > One > > assigns to a variable and one assigns into an object that a > > variable has. Both are normal things you would want to do > and > > both are assignment-like. > > There's no checklist of "normal things" in this context. > Programming > languages are allowed to be designed differently :-) > > In Ruby's object/reference (variable) model, changing the > object via > assignment is *not* normal, and not something I would want to > do. > Assignment is to variables, and variables hold references to > objects > (or, in some exceptional cases like Fixnums, they are > immediate > values). > > > Why do some of you think that everything I suggest has to > do > > with references? > > I don't think that of everything you suggest, but in this > case: > > s = "hi" > (s) = "bye" # changing the object to which s is a > reference > > it seems to be clearly a way of adding that extra level of > remove. It does have the indirection, but it accomplishes almost nothing that references would. It is just a synonym of "replace" (if we made this '=' method 'replace'). This half of the proposal is kind-of an extension of RCR 307 - giving more symmetry between what's allowed on the LHS and RHS of an assign. But, nobody like this half of the idea, so I'll drop that part. The other half - ()/null/default operator (on the RHS) seems to have more support. It looks like Ruby is at least getting it for procs/lambda and python has it (__call__). __________________________________ Yahoo! Mail Mobile Take Yahoo! Mail with you! Check email on your mobile phone. http://mobile.yahoo.com/learn/mail