On 27.12.2007 20:15, MonkeeSage wrote:
> On Dec 27, 12:52 pm, Trans <transf... / gmail.com> wrote:
>> On Dec 27, 12:54 pm, MonkeeSage <MonkeeS... / gmail.com> wrote:
>>
>>
>>
>>> On Dec 27, 9:55 am, Sebastian Hungerecker <sep... / googlemail.com>
>>> wrote:
>>>> George wrote:
>>>>> What would you expect this to do?
>>>>>   [].last = 1
>>>> The same thing as "[][-1] = 1", I'd imagine.
>>>> The problem I'm seeing would be this: If you allow arr.last = x, you'd also
>>>> have to allow arr.last(n) = x if you want to be consistent, but that's not
>>>> syntactically possible.
>>>> --
>>>> NP: Katatonia - Endtime
>>>> Jabber: sep... / jabber.org
>>>> ICQ: 205544826
>>> Agree. It's tempting to treat #first / #last as 0 / -1, but in
>>> actuality they are method calls and simply return a value; they don't
>>> subscript an array. Setting #last is not semantically different than
>>> [1,2,3].pop = 4, it's just that #last is just a bit more subtle.
>> I don't see what you are getting at here. #pop is destructive, #last
>> is not. What does #last return when it is called? It returns a
>> reference to the last element. So why would #last= do anything other
>> then set the reference of the last element? Seems obvious to me. So we
>> can't do last(n) = x, due to syntax constraints, oh well. It would
>> still be convenient to have the obvious n=1, no arg case. I find that
>> my programs are usually easier to read when I can use words rather non-
>> alphabetic symbols.
>>
>> T.
> 
> IOW, #pop returns a value, and this is just what #last does. One could
> argue that #last and #[-1] *should be* synonymous (which may be the
> point of the proposal); but as it currently stands, #last means the
> same thing as `def l(a); a[-1]; end` so it makes no sense to have a
> setter for it.

This is getting weirder and weirder.  I do not follow your argument here 
at all.  If you say that #last is synonymous to [-1] then it would make 
even more sense to make #last= synonymous to [-1]=.

> Unless the semantics change, (to me at least) it is non-
> sense to have #last=. It's the same as a.pop = 3.

Definitively not, as has been pointed out: pop is destructive, last is not.

	robert