I agree with Dave, Allen, and Oliver that we should not just change indexing 
under Harmony script-type opt-in.

Note also that Python, at least, has a more elaborate system of slicing that 
has evolved over the years. I added slice in the Netscape 4 era, which made it 
into ES3 and has the desired negative index behavior, but other additions from 
that era (some from Perl!) do not match, and anyway, the 
array-index-is-a-property-name ship had sailed in 1995.

If we were to develop a generic slice proposal with new syntax, then I think it 
would be crazy not to follow Python's (and ES3-5's slice method's) lead and 
support negative indexing. This would not break existing code because it would 
happen only with new syntax and new functions or methods.

The obvious slice syntax is a[i:j] for a slice of a from index i up to but not 
including index j, with negative indexes supported as from the end, and with 
indexes on either side of : optional, defaulting as in Python.

If : is problematic we could try CoffeeScript's .., but .. and ... as well as . 
in the language may be too much. The syntax is not as important as the 
semantics at this point, but one more syntax observation:

The [:] syntax fits in Python, where a[-1] is the last element of the sequence 
a. But since we don't want to make that change to JS arrays, this slice syntax 
is not so attractive. It will mislead Python folks into using negative indexes 
with property accesses as well as with slices.

Ruby does not dedicate syntax, using methods instead (Smalltalk-y, as one would 
hope).

This seems much more promising for Harmony than new slice or from-the-end 
indexing syntax, since we already have Array and String slice methods that do 
the right thing with negative indexes. We have String charAt/charCodeAt but 
part of the appeal of slicing and negative indexing is how they work on all 
sequence types in Python.

An Array and String get method that takes an index, which can be negative, 
would complement slice. Array would want a set or put method too. Names need 
tuning, but they ought to be short.

/be

On Nov 11, 2010, at 3:25 PM, David Herman wrote:

>> If harmony would introduce this syntax "guarded" under a new script type, 
>> there 
>> would at least be no danger of breaking the web (existing scripts).
> 
> That sounds like an interop nightmare -- you're talking about forking the 
> Array type between language versions. Keep in mind that non-Harmony and 
> Harmony code will be able to interact in the same page.
> 
> Dave
> 
> _______________________________________________
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss

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

Reply via email to