| Thread overview | |||||||||
|---|---|---|---|---|---|---|---|---|---|
|
June 08, 2015 Alpha renaming in types is finally here | ||||
|---|---|---|---|---|
| ||||
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 | ||||
June 08, 2015 Re: Alpha renaming in types is finally here | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Andrei Alexandrescu | On Monday, 8 June 2015 at 07:51:24 UTC, 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
Kind of like when I discovered this mail client written in awk, I'm both amazed and horrified.
| |||
June 08, 2015 Re: Alpha renaming in types is finally here | ||||
|---|---|---|---|---|
| ||||
Posted in reply to deadalnix | On 6/8/15 1:51 AM, deadalnix wrote:
> On Monday, 8 June 2015 at 07:51:24 UTC, 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
>
> Kind of like when I discovered this mail client written in awk, I'm both
> amazed and horrified.
Yah, the function parameter storage classes are gnarly to handle. The other type constructors line up quite nice. -- Andrei
| |||
June 08, 2015 Re: Alpha renaming in types is finally here | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Andrei Alexandrescu | 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. - How do you use it to create recursive types using algebraic? (Assuming that's what your comment refers to.) | |||
June 08, 2015 Re: Alpha renaming in types is finally here | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Timon Gehr | 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. > - 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. Thanks, Andrei | |||
June 08, 2015 Re: Alpha renaming in types is finally here | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Andrei Alexandrescu | 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 > | |||
June 09, 2015 Re: Alpha renaming in types is finally here | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Andrei Alexandrescu | On Monday, 8 June 2015 at 07:51:24 UTC, 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 almost missed the secondary(?) part of this PR. http://erdani.com/d/phobos-prerelease/std_typecons.html#.ReplaceType this looks incredibly useful, I often find myself using ugly templates to do this. | |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply