DIP 1019--Named Arguments Lite--Community Review Round 1

Golden Rockefeller golden.rockefeller at protonmail.com
Fri Feb 15 21:05:38 UTC 2019


On Friday, 15 February 2019 at 12:56:45 UTC, Mike Parker wrote:
> This is the feedback thread for the first round of Community 
> Review for DIP 1019, "Named Arguments Lite":
>
> https://github.com/dlang/DIPs/blob/23ef47a94e0fdd5ddc4b2f6b2f4dcfd3c1f43aa6/DIPs/DIP1019.md
>
> All review-related feedback on and discussion of the DIP should 
> occur in this thread. The review period will end at 11:59 PM ET 
> on March 1, or when I make a post declaring it complete.
>
> At the end of Round 1, if further review is deemed necessary, 
> the DIP will be scheduled for another round of Community 
> Review. Otherwise, it will be queued for the Final Review and 
> Formal Assessment by the language maintainers.
>
> Please familiarize yourself with the documentation for the 
> Community Review before participating.
>
> https://github.com/dlang/DIPs/blob/master/PROCEDURE.md#community-review
>
> Thanks in advance to all who participate.

As another alternative, named parameters can be implemented using 
Tuple/tuple from the Phobos Library. This alternative solution 
will prevent silent breakage. The caller can not opt-out. This 
solution adds even more noise to function calls  but typedef can 
reduce the noise. This solution does not address reordering but 
can be combined with other solutions that allow for reordering. 
Here is an example:


import std.typecons;
double get_area(Tuple!(double, "radius") t_radius) {
     double radius = t_radius.radius;
     return 3.14 * radius * radius;
}

double get_area(Tuple!(double, "diameter") t_diameter) {
     double radius = t_diameter.diameter / 2;
     return 3.14 * radius * radius;
}

void main()
{
     import std.stdio;
     auto area = get_area(tuple!"radius"(4.));
     writeln("Area with radius: ", area);
     area = get_area(tuple!"diameter"(8.));
     writeln("Area with diameter: ", area);
}


More information about the Digitalmars-d mailing list