top | item 41477853

(no title)

flinkerflitzer | 1 year ago

That's an interesting observation. Thanks for taking the time to think critically about my implementation. I posted about this on Reddit and someone pointed out something similar.

I'll link that post for reference: https://www.reddit.com/r/ProgrammingLanguages/comments/1fb5y...

The gist (hehe) was that a full lambda expression in a `passes` case could often feel like overkill. This was the possible solution I suggested:

    What I could do is similar to what you suggested in another comment and similar to what C# does, where I add a third type of case that implicitly substitutes the control expression into a longer expression. Something like this, tentatively using the keyword `matches`:

    int x = rand(0, 11);
    
    when (x + 2) {
        matches _ < 5 || _ > 9 -> { /* body */ }
    }
Here is a structural matching example:

    orientation(image img -> string) {
        when (img) {
            matches _.width == _.height -> return "square";
            matches _.width > _.height -> return "landscape";
            otherwise -> return "portrait";
        }
    }

discuss

order

No comments yet.