On Mon, 18 May 2009 14:33:29 -0400, bearophile wrote: > 3) If you want to add a second kind of switch, then let's > add a truly safer one, with no fall-through, etc.
**WARNING** an off-topic aside follows ... The next version of the Euphoria programming language has implemented 'switch'. The language only had 'if-elsif-' constructs before. The new 'switch' has this syntax ... 'switch' ['with fallthru'] 'do' 'case' EXPRESSION 'then' STATEMENTS [( 'break' | 'fallthru')] . . . 'end' 'switch' Yeah, I know is not a punctuation-heavy language like D, but get over that for now. The point is that by default the cases do not fallthru. If you want cases to fallthru by default you need to add the 'with fallthru' qualifier. Furthermore, each case can have 'break' to explicitly prevent it falling thru to the next case, or 'fallthru' to explicitly cause it to fall thru to the next case. If you have neither, then it does the default action indicated on the 'switch' line. procedure classify(char c) write("You passed ") switch c do case '#' then writeln("a hash sign.") case in "012345679" then writeln("a digit.") case 'A' to 'Z', 'a' to 'z' then writeln("an ASCII character.") case '.', ',', ':', ';', '!', '?' then writeln("a punctuation mark.") case else writeln("quite a character!") end switch end procedure -- Derek Parnell Melbourne, Australia skype: derek.j.parnell