www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Alpha renaming in types is finally here

reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
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
Jun 08 2015
next sibling parent reply "deadalnix" <deadalnix gmail.com> writes:
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.
Jun 08 2015
parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
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
Jun 08 2015
prev sibling next sibling parent reply Timon Gehr <timon.gehr gmx.ch> writes:
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. This is type replacement. - How do you use it to create recursive types using algebraic? (Assuming that's what your comment refers to.)
Jun 08 2015
parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
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. 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 Feedback appreciated. Thanks, Andrei
Jun 08 2015
parent Timon Gehr <timon.gehr gmx.ch> writes:
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. 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 Feedback appreciated. ...
Oh, it is used in the implementation. That clears it up. Now, how do I declare mutually recursive types? :o)
 Thanks,

 Andrei
Jun 08 2015
prev sibling parent "weaselcat" <weaselcat gmail.com> writes:
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. this looks incredibly useful, I often find myself using ugly templates to do this.
Jun 09 2015