-----Messaggio originale----- 
From: Brendan Eich 
Sent: Wednesday, February 12, 2014 2:00 AM 
To: Nathan Wall 
Cc: Giacomo Cau ; es-discuss@mozilla.org 
Subject: Re: Another switch 

Definitely good to see new languages being designed and implemented.

JS is not going to break compatibility on the old fall-through behavior 
of switch, inherited from Java from C++ from C. All the C-like languages 
copy this flaw, because to do otherwise with the same keyword would be 
worse (confused users cross-training and -coding among languages would 
want our scalps), and IMHO using novel reserved words would be hardly 
better.

/be
> Nathan Wall <mailto:nathan.w...@live.com>
> February 11, 2014 at 3:21 PM
> Hi Giacomo,
>
> Not sure whether this will be of interest to you, but I have been 
> working on a JS-derived language called Proto (still highly 
> experimental) which has a switch statement that works exactly as you 
> described:
>
> https://github.com/Nathan-Wall/proto/blob/master/docs/control/switch.md
>
> Perhaps you will at least find it interesting. :)
>
> Nathan
>
 

yes, so great it would be a pleasure to contribute :)

the proposal doesn't want, by no means, to break the compability with the 
present syntax and/or semantics of the switch.
At most, should be considered as an extension of current syntax with a 
consequential new semantics. 

the swith, as it is known, should anyhow be written as 

switch (...) {
    case ...: ...; break;
    case ...: ...; break;
    case ...: ...;
    case ...: ...; break;
    otherwise: ...
}

but, it could be handy to write the same thing with a slightly different syntax:

switch (...) break {
    case ...: ...;
    case ...: ...;
    case ...: ...; continue;
    case ...: ...;
    otherwise: ...
}

Some break less, no new keyword, no incompatibility with past.
Who shall use it, will know from the start that here, the continue will not 
lead him at the beginning of the first for or while that englobe the switch, 
but only at the following case.


Then, willingly, we could also think that normal switch be desugared in

switch (...) continue {
    case ...: ...; break;
    case ...: ...; break;
    case ...: ...;
    case ...: ...; break;
    otherwise: ...
}

with break and continue (except that between ')' and '{' ) that, obviously, 
continue as before.
This isn't a must, it's just for my pleasure in finding regularity.


At last, if we were to look for the burden of a new keyword, even better

select (...) {
    case ...: ...;
    case ...: ...;
    case ...: ...; continue;
    case ...: ...;
    otherwise: ...
}

but I realize this could be a break point of the existing code and, onestly 
speaking, it is beyond my ability to evaluate.


Anyhow, thanks for your attention.


bye

    Giacomo Cau


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

Reply via email to