Alpha renaming in types is finally here

Timon Gehr via Digitalmars-d digitalmars-d at puremagic.com
Mon Jun 8 09:46:25 PDT 2015


On 06/08/2015 06:23 PM, Andrei Alexandrescu wrote:
> On 6/8/15 5:43 AM, Timon Gehr wrote:
>> On 06/08/2015 09:51 AM, Andrei Alexandrescu wrote:
>>> I've been wondering for a good while whether it's possible with what we
>>> have. Looks like it is, modulo some gnarly hacks in introspecting
>>> function types.
>>>
>>> https://github.com/D-Programming-Language/phobos/pull/3394
>>>
>>>
>>> Destroy!
>>>
>>> Andrei
>>
>> - This is not alpha renaming. Alpha renaming renames a variable at the
>> point it is bound and updates all occurrences of the variable. Alpha
>> renaming does not change the term it is applied to.
>> http://en.wikipedia.org/wiki/Lambda_calculus#.CE.B1-conversion
>>    This is type replacement.
>
> I'm using the term a bit loosely but I think appropriately.
> ...

Well, no, there is no binding site involved. You could use ReplaceType 
or SubstituteType.

>> - How do you use it to create recursive types using algebraic? (Assuming
>> that's what your comment refers to.)
>
> I've added documentation and examples to
> http://erdani.com/d/phobos-prerelease/std_variant.html#.Algebraic.
> Feedback appreciated.
> ...

Oh, it is used in the implementation. That clears it up.

Now, how do I declare mutually recursive types? :o)

>
> Thanks,
>
> Andrei
>



More information about the Digitalmars-d mailing list