From: Gary Wright Date: 2007-12-30T09:06:26+09:00 Subject: Re: Add Array#first= and Array#last= to std lib On Dec 29, 2007, at 6:24 PM, MonkeeSage wrote: > I wasn't arguing for or against #last=, per se; I was only trying to > explain why it doesn't make sense, _to me_, "Unless the semantics [of > #last] change," to have #last=. I.e., #[] subscripts the array and > returns the value of the index, but #last returns the value of > subscripting the array at index #length-1; it is another level of > abstraction removed from #[]; so with those semantics, #last= would be > like #length= (or #pop=), and you end up with exceptions when the > value is immutable. Why do you shift your terminology when talking about last? Using your terminology but my mental model of arrays: #[n] subscripts the array with n and returns the value of the index #[-1] subscripts the array with (length-1) and returns the value of the index #last subscripts the array with (length-1) and returns the value of the index Why do you rephrase that last case as: #last returns the value of subscripting the array at index #length-1 Are you suggesting that #last does something distinctly different than subscripting via -1? If not then it would seem your argument against last= would apply just as well to 'array[-1] = x'. Are you suggesting that element assignment with negative subscripts also don't make sense to you? Objections to last= and first= based on redundancy is one thing, but you seem to be objecting based on semantics and I'm trying to understand that objection because the semantics seem to be quite natural to me. Gary Wright