Creating a List Type Using std.variant.algebraic

Meta via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Apr 27 14:09:20 PDT 2014


On Sunday, 27 April 2014 at 20:54:02 UTC, bearophile wrote:
> An Algebraic is a sum type, so you can't store two value in it, 
> only one, an int or a T*. But this is not going to solve your 
> problems...
>
> Bye,
> bearophile

Ah, you're right. I'm getting mixed up from my own initial 
example. Fiddling with it a bit brings me back around to your 
code:

import std.variant;

alias List = Algebraic!(int, This[]);

void main()
{
	List l = List([List(1), List([List(2)])]);
}

Which is absolutely ugly. The more I try to use Algebraic, the 
more I come to think that this is something that can't be done 
cleanly in a library, even in D.


More information about the Digitalmars-d-learn mailing list