For me, && is more natural than "when" because i've written more switch that uses && than "when". And don't forget that unlike most of the code, with pattern matching the number of characters does matter, this is more similar to lambdas, if what you write is too verbose, you will not write it.

At the risk of premature bikeshedding, have we already discussed and discarded the idea of spelling “when” as “if”? It’s been a long time, and I forget.

There was not extensive discussion on this, and its all very subjective/handwavy/"what we think people would think", but I remember a few comments on this:

 - The generality of "if" reminded people of the Perl-style "statement unless condition" postfix convention, and that people might see it as an "inconsistency" that they could not then say

   x = 3 if (condition);

which is definitely somewhere we don't want to go.


 - We're use to seeing "if" with a consequence, and a "naked" if might have the effect of "lookahead pollution" in our mental parsers.


 - Keeping `if` for statements allows us to keep the "body" of case clauses visually distinct from the "envelope":

    case Foo(var x)
    if (x > 3) : if (x > 10) { ... }

would make people's eyes go buggy.  One could argue that "when" is not fantastically better:

    case Foo(var x)
    when (x > 3) : if (x > 10) { ... }

but it doesn't take quite as long to de-bug oneself in that case.

On 2/15/2022 9:55 PM, Guy Steele wrote:

Reply via email to