Lambda vs. function

Brendan Eich brendan at mozilla.com
Mon Oct 27 09:49:50 PDT 2008


On Oct 27, 2008, at 8:21 AM, Maciej Stachowiak wrote:

>> A more functional multiple-case dispatch form would be like  
>> Scheme's `cond' or ML/Haskell `case'. God, we need macros.
>
> ECMAScript's switch is sort of halfway between Scheme cond and C  
> switch. Personally I think fall through and explicit break were  
> unnecessary concessions to C-likeness but I don't think they create  
> insurmountable problems. Case labels at arbitrary points in the code  
> would be much worse because it's hard to describe them in any way  
> but a controlled goto.

Netscape management said that JS had to "look like Java", which  
follows C in having fall-through from an upper case to a lower one.  
Same as C++. That's a big head-wind to tack against, and I was not  
prepared to explain yet another switch statement to Java-heads circa  
1995.

As you say, at least we don't have the C/C++ arbitrary case label in  
switch body fun. Useful for low-level hacking a la Duff's Device, but  
hazardous scaled over a large distribution of programmer ability  
(IIRC, comp.risks had an item on an AT&T telephony switch crash in the  
late '80s or early '90s that was blamed on a missing break. I can't  
find it atm via Google search, which makes me sad; anyone with a  
pointer, please mail me).

FWIW, I agree switch can have tail position calls in its cases. That  
it is messy to specify, that fall-through makes it irregular, doesn't  
seem like enough of a reason to specify no tail call positions in  
switch statements.

/be


More information about the Es-discuss mailing list