On Sunday, 19 May 2013 at 18:23:22 UTC, Walter Bright wrote:
On 5/19/2013 5:02 AM, Simen Kjaeraas wrote:
By definition? Pointer semantics are what we choose it to
mean.
Of course. But which definition is saner:
For many types, it is extremely useful to have some sort of
"invalid" value for it. null fills that role nicely for
pointers, just as nan does for floating point types, and 0xFF
does for UTF-8.
I don't wanted to bring that up because I thought it would
confuse people, but yes, 0xFF for char is the exact same problem
and I argue in the same direction : require explicit
initialization.
There's not anything insane about it. The Nullable type
constructor even exists in order to provide such an invalid
state for types (like int) which normally do not have one.
If something can be null, you MUST do something to handle
specifically the null case. D completely fail to ensure that.
void buzz(Foo f) {
f.foo(); // Rely in faith. It is invalid and way easier to
write than the valid code, which is THE recipe for it to spread.
}