|
|
|
|
|
by flinkerflitzer
646 days 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";
}
}
|
|