Struct with default ctor (Was: [dmd-beta] dmd 2.064 beta take 2)

deadalnix deadalnix at gmail.com
Sun May 19 11:22:15 PDT 2013


On Sunday, 19 May 2013 at 18:05:03 UTC, Idan Arye wrote:
> These are the assumptions I'm working with:
>  - We can't use a nullable reference
>  - We can't initialize the reference upon declaration to it's 
> real value.
>

If you can't initialize the value, you got to assume when you use 
it that it may not have been initialized and handle that case. 
You need either an Option (where you have to be explicit about 
what you do when the thing is null) or a Maybe (where null is 
ignored and Maybe "contaminate" every result depending on a maybe 
value).

> The first assumption is required because we want to describe 
> how the bug scenario deadalnix brought up would look like if 
> references were non-nullable. The second assumption is required 
> because if we could initialize the reference upon declaration 
> to it's real value, we should have just done it in the first 
> place and avoid the whole race hazard.
>

But that is the whole point ! The damn thing should have been 
initialized in the first place to avoid the bug. And this should 
have been caught at compile time with any sane type system.

And this is the exact problem with nullable by default : plenty 
of stuff ends up be null is some weird situation that almost 
never occurs when they are assumed not to be and the program 
crashes. NullPointerException now return 4 millions result on 
google, which is probably around once per java developers.

> Now, I'm not saying the solution I presented is good - I'm 
> trying to show that given those two assumptions, we are forced 
> to use this bad solution.

This solution is complex, do not make any sense in a strongly 
typed language and don't even solve the presented case.


More information about the Digitalmars-d mailing list