1. the INVENTOR of the "reference" concept himself admits that this is a flawed 
design. 
see:  
http://qconlondon.com/london-2009/presentation/Null+References:+The+Billion+Dollar+Mistake

2. "null" is an a type-system attribute, hence should be checked at compile 
time and would have ZERO affect on run-time performance. 
Same as assigning a string value to an int variable. 

3. the notion of an "undefined" state for a type can be generally implemented 
by the OPTION type and D pointers are an ad hoc implementation of this concept.
see: http://en.wikipedia.org/wiki/Option_type
Any type can be wrapped by an OPTION type. trying to do the converse of this is 
impractical and is bad design. 

4. As already pointed by others, Walter's array should be:
Option!T[] array; 

5. C programmers use null pointers and other special "canary" values as Walter 
described mainly as rcodes. This is a BAD and bug-prone way of handling errors 
and is replaced in D by a MUCH better mechanism called "Exceptions". I do NOT 
want to check for null or zero or NaN throughout my code as if I'm writing c 
code! This is why D uses signaling NaNs for floats. 
This accounts for the majority of the uses of null. For the rest just use the 
option type!

Reply via email to