Expression switch - an alternate proposal

Stephen Colebourne scolebourne at
Tue Apr 10 20:59:20 UTC 2018

On 10 April 2018 at 09:02,  <forax at> wrote:
>>> Basically, your proposal is to use -> eveywhere, i think i prefer the opposite,
>>> do not use arrow at all.

Current Oracle proposal:
statements = colon
expression = colon, with arrow for expressions

Alternate proposal:
statements = colon
expression = symbol-that-isnt-colon

Remi proposal:
statements = colon
expression = colon

If the goal is a unified switch expression, Remi proposal wins. It is
dead simple and very consistent.

>> This is a reasonable alternative, but I don't think it would be very
>> popular.  I think people will really love being able to write:
>>     case MONDAY -> 1;
>>     case TUESDAY -> 2;
>> and will be sad if we make them write
>>     case MONDAY: break 1;
>>     case TUESDAY: break 2;

Meh. Three more characters.

- Avoids the arrow having a conflict of meaning with lambda.
- No mixed arrows & colons
- Much more consistent.
- Minimal change from existing switch.
- Less to learn.
Win, win, win.

So while I'd still choose to have a separate symbol for expression and
statement switches (because of my #1 goal), I'm also pretty fine with
the Remi proposal (because my #2 goal).

In fact, what the discussion has informed me is that my #1 and #2
goals are the wrong way around. Getting rid of the mixed arrows and
colons is now more important to me than understanding the context in a
large switch.


More information about the amber-dev mailing list