On Jul 8, 2011, at 4:27 PM, Luke Hoban wrote:

> >>>> I agree wholeheartedly with these.  In fact, I’d go further on (2), and 
> >>>> say “Anything that can be done declaratively can also be done 
> >>>> imperatively, using ES5 syntax”.
>  
> >>The problem here is that some new syntax cannot be faked with old syntax, 
> >>namely function calls, without quoting code in strings. This is not usable.
>  
> I think it’s fine for the imperative solution to be less usable.  That’s the 
> value-add of opting-in to the ES.next syntax.  And of course some (most) new 
> syntax is just syntax, and the ultimate objects it creates are ones that 
> could have been created using some more complex path.  Those don’t need any 
> library support.  
>  
> When Allen mentioned “imperatively”, I assumed he meant “with a library”.  
> I’m not actually sure what other interpretation there would be.   So I sort 
> of expected that clarification to “using ES5 syntax” to be a no-op, though I 
> expect it is practically quite important.

Mostly, although
     obj[foo] = blah;
is also an imperative way to define a property. 

Also note that my intent was to restricted both principles to matters directly 
relating to objects even though I didn't explicitly mention objects in naming 
the 2nd principle.  There are many things  in Es.next (and ES5, for that 
matter) that can be done "declaratively" WRT constructing closures that has no 
API based alternative (other than eval, which I choose not to count).  There is 
probably an argument to be made for accomplishing the somethings via reflective 
APIs.  However, given that there is no history of that in ES I don't think we 
need to make it a Es.next requirement.


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

Reply via email to