Algebra With Types

Meta via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Apr 21 10:33:22 PDT 2017


On Friday, 21 April 2017 at 16:31:37 UTC, H. S. Teoh wrote:
> On Fri, Apr 21, 2017 at 04:16:30PM +0000, David Sanders via 
> Digitalmars-d-learn wrote:
>> I'm trying to do algebra with types ala 
>> http://chris-taylor.github.io/blog/2013/02/10/the-algebra-of-algebraic-data-types/
>> 
>> Below you will find my attempts at "adding" types in D. I've 
>> outlined the parts I'm having trouble with using block 
>> comments.
>> 
>> 1) How do I figure out whether a type is an instantiation of
>> std.variant.Algebraic?
>> 2) If the type is Algebraic, how do I capture its AllowedTypes?
> [...]
>
> static if (is(T : Algebraic!(U...), U))
> {
> 	// U now refers to the argument to Algbraic.
> }
>
>
> --T

There's also a private `isAlgebraic` template[1]. Is there any 
reason why we couldn't just make this public?

1. https://github.com/dlang/phobos/blob/master/std/variant.d#L2236


More information about the Digitalmars-d-learn mailing list