Self-referential tuples?
Andrei Alexandrescu via Digitalmars-d
digitalmars-d at puremagic.com
Tue Jun 9 16:04:46 PDT 2015
On 6/9/15 3:58 PM, Timon Gehr wrote:
> On 06/09/2015 05:28 PM, Andrei Alexandrescu wrote:
>> Following the use of This in Algebraic
>> (https://github.com/D-Programming-Language/phobos/pull/3394), we can
>> apply the same idea to Tuple, thus allowing one to create
>> self-referential types with ease.
>>
>> Consider:
>>
>> // A singly-linked list is payload + pointer to list
>> alias List(T) = Tuple!(T, This*);
>>
>> // A binary tree is payload + two children
>> alias Tree(T) = Tuple!(T, This*, This*);
>> // or
>> alias Tree(T) = Tuple!(T, "payload", This*, "left", This*, "right");
>>
>> // A binary tree with payload only in leaves
>> alias Tree2(T) = Algebraic!(T, Tuple!(This*, This*));
>>
>> Is there interest in this? Other application ideas to motivate the
>> addition?
>>
>>
>> Andrei
>
> Well, the issue is with this kind of use case:
>
> alias List(T)=Algebraic!(Tuple!(),Tuple!(T,This*));
So a list is either nothing, or a head and a tail. What is the problem
here? -- Andrei
More information about the Digitalmars-d
mailing list