Proposal : allocations made easier with non nullable types.

Denis Koroskin 2korden at gmail.com
Tue Feb 10 09:20:31 PST 2009


On Tue, 10 Feb 2009 19:41:25 +0300, Andrei Alexandrescu  
<SeeWebsiteForEmail at erdani.org> wrote:

> Denis Koroskin wrote:
>> On Tue, 10 Feb 2009 17:40:36 +0300, Andrei Alexandrescu  
>> <SeeWebsiteForEmail at erdani.org> wrote:
>>
>>> Denis Koroskin wrote:
>>>> On Tue, 10 Feb 2009 17:11:06 +0300, Andrei Alexandrescu  
>>>> <SeeWebsiteForEmail at erdani.org> wrote:
>>>>
>>>>> Nick Sabalausky wrote:
>>>>>> "Daniel Keep" <daniel.keep.lists at gmail.com> wrote in message  
>>>>>> news:gmpd71$8uj$1 at digitalmars.com...
>>>>>>> Alex Burton wrote:
>>>>>>>> I think it makes no sense to have nullable pointers in a high  
>>>>>>>> level language like D.
>>>>>>> Oh, and how do you intend to make linked lists?  Or trees?  Or any
>>>>>>> non-trivial data structure?
>>>>>>>
>>>>>>  Null Object Pattern:
>>>>>> --------------
>>>>>> class LinkedListNode(T)
>>>>>> {
>>>>>>     LinkedListNode!(T) next;
>>>>>>      private static LinkedListNode!(T) _end;
>>>>>>     static LinkedListNode!(T) end() {
>>>>>>         return _end;
>>>>>>     }
>>>>>>     static this() {
>>>>>>          _end = new LinkedListNode!(T);
>>>>>>     }
>>>>>> }
>>>>>> --------------
>>>>>
>>>>>
>>>>> What is "next" for the _end node?
>>>>>
>>>>> Andrei
>>>>  Perhaps, 'this' (i.e. itself).
>>>
>>> Then there's going to be quite a few infinite loops out there...
>>>
>>> Andrei
>>  No, you just need to have a private ctor:
>
> I meant that code that fails to check for _end when iterating through a  
> list will never stop.
>
> Andrei

No, error like that will be detected at compile time (comparison against  
null is disallowed for non-nullable reference).



More information about the Digitalmars-d mailing list