First Draft: Static Single Assignment

Paul Backus snarwin at gmail.com
Tue Dec 2 23:04:27 UTC 2025


On Tuesday, 2 December 2025 at 08:03:29 UTC, Walter Bright wrote:
> You are correct in the behavior.
>
> Whether this will cause problems or not, is a little less 
> clear. Inserting `final` into the overload process adds another 
> axis and so a great deal of complexity. I initially designed a 
> very simple overload system, but things have gotten out of 
> hand. I don't wish to repeat the C++ error of nobody knowing 
> how overloading works; programmers just try random things until 
> they get something that works. We are already perilously close 
> to that.
>
> Personally, overloading is overused.
>
> It also would change the name mangling, another disruption.

I agree that making final a full-fledged type qualifier would add 
a considerable amount of additional complexity to the language.

However, I do not think the best solution to that problem is to 
implement it in this strange, halfway-in-between state, where 
it's technically a storage class but sometimes *behaves* like a 
type qualifier. This is the exact kind of confusing dessert 
topping/floor wax duality that you (rightly) criticize in C++'s 
reference types.

If we are not willing to commit to making final a fully-fledged 
type qualifier, then I think we would be better off not including 
it in the language at all. If it's not worth doing right, it's 
not worth doing.


More information about the dip.development mailing list