On Monday, 15 April 2013 at 03:46:47 UTC, Nick Sabalausky wrote:
On Mon, 15 Apr 2013 02:48:27 +0200
"bearophile" <bearophileh...@lycos.com> wrote:

Idan Arye:

> You can't do those things with `switch` because it's a > statement.

In various Reddit threads I see people almost angry against the statement-expression distinction in contemporary programming languages. I am just starting to understand them.


I've never seen a big problem with the statement vs expression
distinction, and I think the "statements == expresions" languages sometimes takes things slightly overboard in the process of forcing them
into the same mold. However, I've *definitely* wished on many
occasions that D's switch could be used as an expression like in Haxe.

Having D's `switch` be an expression is problematic, since D does not have the convention of blocks-returning-the-value-of-the-last-statement, and since D is statically typed - adding this might cause unwanted implicit conversions.

Maybe it could be pulled off with a syntax similar to Scala:
    switch(x){
        case 1 => ...
        case 2 => ...
    }

This will also make it look similar to the function literal style, where using `=>` means you are gonna write the function's body as the return expression instead of as a block.

In the meanwhile, we can use `predSwitch` - if I only knew where to put it...

Reply via email to