> Allen makes the point that class D extends B {...} may look too much like 
> languages where it means something quite different.

Yeah, I just don't buy the argument that having different semantics should lead 
to different syntax: it proves too much. By definition, JS has a different 
semantics from other languages -- it's a different language. Are we obliged to 
use radically different syntax for the whole of JS? Certainly not. The point of 
using familiar syntax is to call out the similarities, but there will always be 
differences.

> Whatever you think of the meta section, the leading 'class D {' telegraphs 
> influence from, and just familiarity with, those other languages. And I don't 
> think that is a bad thing even if semantics differ.
> 
> Just changing 'class' to 'constructor' (adding a new 
> perhaps-only-contextually reserved word, and a long one at that) is not the 
> issue. Sure, doing that would in a text-only way make the syntax not look 
> like any other language, exactly. But ignore the skin: the bones look 
> familiar, going back to C structs.
> 
> Now add some notion of inheritance and you're following the C++ "body plan".
> 
> Do we really need to look different yet still have bones that look so 
> familiar? I am not convinced.
> 
> The strongest case for extending initialiser syntax is that it is "nearly 
> declarative" today. That suggests strongly making the extension fully 
> declarative, i.e., not usable as an expression. And that, all else equal 
> (never is, but:) says to consider class D extends B {...}. My 2 cents.

+1

I'm afraid the more radically different syntax just doesn't pass the smell 
test. Especially given that, as you suggest, the point is to give declarative 
syntax to what has always been the JS analog of the single inheritance patterns 
from the C++/Java world.

Dave

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

Reply via email to