Spec#, nullables and more
Denis Koroskin
2korden at gmail.com
Sun Nov 7 02:06:27 PST 2010
On Sat, 06 Nov 2010 23:37:09 +0300, Gary Whatmore <no at spam.sp> wrote:
> Walter Bright Wrote:
>
>> Adam Burton wrote:
>> > I wouldn't consider that as the same thing. null represents the lack
>> of a
>> > value where as 25 is the wrong value. Based on that argument the
>> application
>> > should fail immediately on accessing the item with 25 (not many moons
>> later)
>> > in the same manner it does nulls, but it doesn't because 25 is the
>> wrong
>> > value where as null is a lack of value.
>> >
>> > As with the array allocation example earlier you initialise the array
>> to
>> > nulls to represent the lack of value till your application eventually
>> gets
>> > values to assign to the array (which may still be wrong values). As
>> shown by
>> > my alternative example non-nulls allow you to define that a
>> > variable/parameter wants a value and does not work when it receives
>> nothing.
>> > However in the case of the array because all the information is not
>> there at
>> > the point of creation it is valid for the array items to represent
>> nothing
>> > till you have something to put in them.
>>
>>
>> I am having a real hard time explaining this. It is conceptually *the
>> same
>> thing*, which is having an enforced subset of the values of a type.
>
> I'm seeing it. The other arguments for non-null types also fall short
> because non-nulls don't solve basic problems like arrays, basic
> collections in the library (custom fill policy). Has any mainstream
> language adopted non-null types? No they haven't because the idea is
> broken.
That's not because the concept is broken, it's because mainstream
languages were developed before it became clear that non-nullables are a
must. Although the concept itself is an old one, it's wasn't very popular
until recently.
C# has them (in form of int vs int?). They tried to apply the same concept
to reference types, but found no way to do so without breaking existing
code.
See also
http://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-Tony-Hoare
More information about the Digitalmars-d
mailing list