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

w0rp devw0rp at gmail.com
Sun May 19 15:09:01 PDT 2013


On Sunday, 19 May 2013 at 21:36:17 UTC, Andrei Alexandrescu wrote:
> On 5/19/13 4:30 PM, Peter Alexander wrot
> OK, this is sensible. One question - would you be willing to 
> type symbols as NullType!T instead of T to avoid these issues?
>
> Thanks,
>
> Andrei

Trying to come up with some once-and-for-all safe way to deal 
with null in languages which allow null references by default is 
something I wonder about now and then. This is due to my desire 
to adopt nice patterns for making my time spent working with a 
language safer and easier.

Option/Maybe I think only really works when the language has 
references as non-null by default. Otherwise, you're writing 
verbose code for Option/Maybe and lies the rest of the time. (I'm 
looking at Scala.) For D, I decided that my way to do it, to be 
applied almost all of the time, is to write contracts.

void func(Klass value) in {
     assert(value !is null);
} body {
}

This stops null from being passed through too many functions, so 
that alleviates a lot of problems. I think contract programming 
is a good solution for this, and it applies more generally to 
other kinds of invalid values. This can include values other than 
the default values.



More information about the Digitalmars-d mailing list