Feedback wanted: switch expression typing
Dan Smith
daniel.smith at oracle.com
Sat Mar 31 01:44:49 UTC 2018
> On Mar 30, 2018, at 10:54 AM, Remi Forax <forax at univ-mlv.fr> wrote:
>
> I do not see (B) as sacrifying the consistency because the premise is that an expression switch should be consistent with ?:
>
> But an expression switch can also be modeled as a classical switch that returns it's value to a local variable.
>
> int a = switch(foo) {
> case 'a' -> 2;
> case 'b' -> 3;
> }
> can be see as
> int a = $switch(foo);
> with
> int $switch(char foo) {
> case 'a': return 2;
> case 'b': return 3;
> }
I mean, sure, this is another way to assert "switches in assignment contexts should always be poly expressions".
But it's just as easy to assert "conditional expressions in assignment contexts should always be poly expressions".
int a = test ? 2 : 3;
can be seen as
int a = $conditional(test);
with
int $conditional(boolean test) {
if (test) return 2;
else return 3;
}
Those are probably good principles. But if we embrace them, we're doing (C).
—Dan
More information about the amber-spec-experts
mailing list