null [re: spec#]

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Sun Nov 7 17:47:18 PST 2010


On 11/7/10 4:21 PM, bearophile wrote:
> Andrei Alexandrescu:
>
>> And what was exactly the claim that was wrong?
>
> That there is no need of compiler&  syntax support to implement "good enough" nonnullable reference types in D.

The only change needed is constructor flow to make sure types with 
@disable'd constructors are always properly initialized. Array 
construction can be supported with a library function.

>> What's a relative semantics?
>
> - The limited form of typestate change, as shown in the original Spec# paper I've shown; I have explained this five times in recent posts, if you want I may explain again.
> - Some good solution to the problem of initializing a collection of nonnullable references, a possible solution is explained in the oiriginal Spec# paper I have shown. This too uses a limited form of typestate. But other solutions may be invented that don't require typestates.
> - Some good solution to the problem of initializing struct/class fields, as explained in the second paper I have linked, regarding "delayed types".
>
> Most of that semantics can't be expressed in D, so you need compiler support (and syntax support, but syntax here is very limited, you just need @ ? @notDelayed and something like a "done" for arrays/collections of nonnull references. Syntax is the simplest part of this design).

Such work is not new to Spec# (there are papers that introduce 
non-nullables to Java, with which I'm very familiar). I think simpler 
solutions are available by restricting constructors appropriately.

> In the end seeing the amount of holes left in the design of the D module system and immutables, this nonnull design may be too much hard for D, most people here don't even see 1/2 of the problems needed to implement nonnullables well enough. So maybe we are just wasting time here. D newsgroup probably needs threads about possible ways to fix/finish the features D2 already has...

If there are design holes those need to be known. There is awareness and 
institutional memory (via bugzilla) about bugs in the implementation.


Andrei


More information about the Digitalmars-d mailing list