<...> unless the programmer specifically specifies a fall-through case with 'also', no fall-through will occur.
That's the way to do it. C making the fall-through the default is yet another design atrocity in that language.
A few things for you to consider:
when n
is 0 do n = 1;
is 10 do n = 0; fall; ' or "fall-through"
is 1 do n = 2; fall;
is 2 do n = 3;
is other do n = -1;
end;
I'd rather have the fall-through made explicit instead of implicit by the use of a keyword ("also") that doesn't clearly denote it is meant to fall through.
Also (pun intended), do you really need the "is" ? ... it seems this would be even more readable (possibly also using a single "is" just after the "n" variable being tested):
when n [is]
0 do n = 1;
10 do n = 0; fall; ' or "fall-through"
1 do n = 2; fall;
2 do n = 3;
other do n = -1;
end;
Also (again!) one advantage I see to having an explicit "fall" is that the "fall" can then be made conditional, for instance:
when n
0 do n = 1;
10 do n = 0; if <somecondition> then fall; ' or "fall-through"
1 do n = 2; if <somecondition> then fall;
2 do n = 3;
other do n = -1;
end;
now falling through has to be explicitly and clearly stated by the use of a keyword that clearly identifies its purpose and in addition to that, falling or not falling is completely under programmer control. I like that part
ETA:Added [is] after the "n" variable to see how the thing would look with it.