First Draft: Static Single Assignment

monkyyy crazymonkyyy at gmail.com
Mon Nov 17 02:01:40 UTC 2025


On Monday, 17 November 2025 at 01:09:48 UTC, Walter Bright wrote:
> On 11/16/2025 4:18 PM, monkyyy wrote:
>> On Sunday, 16 November 2025 at 22:08:02 UTC, Nick Treleaven 
>> wrote:
>>>
>>> So I assume `typeof(&f)` would be `const int*`?
>> 
>> if its not `final int*` it would be repeating the ref type 
>> theory failures and its supposedly in the same group as const
>
> Fortunately, `final` is a storage class and not a type, so type 
> theory does not apply.

Type theory is in laws of physics, length * time = mph; square 
cube laws etc. You dont get to avoid it. The math people uses big 
stupid words to sound smarter(while being dumber), while they are 
busy proving 1+1==2 in 300 pages, Im going to tell ya if I put a 
T in a T[] and then I grab an element out of the box, I expect a 
T.

`alias S=T[]; assert(is(typeof(S.init[0])==T));`

Ref breaks this so I get to convert all refs to pointers in all 
apis thats have a depth larger then 1; I don't actually care 
about a safetyism keyword (and if its like const it is one) but 
for metaprogramming you should have it just work. Otherwise 
phoboes v3 will be even slower.

if its not a `(final int)*` you should double check the behavior 
of nested final types `final(final int*)*[]` for type theory 
concerns. So that its consistent and compiles with basic meta 
programming patterns.



More information about the dip.development mailing list