On 12.11.2010 1:17, Allen Wirfs-Brock wrote:
-----Original Message-----
From: Dmitry A. Soshnikov [mailto:dmitry.soshni...@gmail.com]
...
Yeah, it's possible to make this thing generic, though maybe also good only for
arrays. Need to more discuss, think.

There isn't actually all that much difference between array instances and 
non-array objects with array index properties. ES5 went in the direction of 
making sure that array functions all worked on arbitrary objects.  I don't 
think we would want to go backwards on that.


Yeah, however, I think it's mostly not about generic methods, but about overloaded [[Get]] / [[Put]]. And in ES3 and ES5 overloaded [[Put]] / [[DefineOwnProperty]] is not generic but special for arrays. The same I assume this feature is special for arrays. Really, I don't see any big issues with backward compats. They are so minimal that may be ignored.


...
this would break any code that currently uses property names like "-1".
I repeat, we tried to find and remind at least _one_ more-less serious use-case
where negaitve indices where used in the old code with array -- and can't. Do
you know any? It will be useful if you show.

Anybody who is using an object (possibly an array instance) as a hash table 
with signed integer keys



That's another case. Of course, if we'll consider the other objects, then "-1" may be used. But, repeat, this feature (at least with the syntax `a[-n]`) should be considered first/only for arrays.

Another thing I agree we may want to see in JS a generic such a feature, then the alternative syntax as `a[* - 1]` may be the case. That, repeat, will bring also a sugar for `a.push(10)` as `a[*] = 10`.


   This isn't just syntactic sugar. It also has all sorts of complications 
relating to
the basic property access semantics.  Getting this right would probably require 
a
major redesign of ECMAScript object/property semantics in a manner that I
wouldn't anticipate happening anytime soon.
Thanks. Though, I don't see a bit changes (how you like to described all in dark
colors :)). At maximum (if not generic) -- only [[Get]] of arrays and strings 
will be
affected.
And presumably [[Put]] and as some sort of dynamic parsing of string property 
names and for generic object support check for a length property, etc.


Yep, sure.

So, do I understand correctly that you are against this feature and don't like 
it?
(Just another question -- are you aware that it used in Python, Ruby, Perl,
Coffee, other langs?)

I have no problem with this feature as it appears in other languages.  I'm just 
saying that it doesn't appear to fit well with JavaScript's property semantics.

But what are suggesting at the same time? What's your meaning -- whether JS needs a some sugar for taking elements (ok, let's say) of a sequence starting-from-the-end or not?

Dmitry.

_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to