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

aliak something at something.com
Sat Feb 16 11:57:31 UTC 2019


On Friday, 15 February 2019 at 20:28:02 UTC, Paul Backus wrote:
> On Friday, 15 February 2019 at 18:32:52 UTC, Yuxuan Shui wrote:
>>> 5. Similarly, as already mentioned by somebody else, the DIP 
>>> fails to explain interaction with function default arguments.
>>
>> I think it is reasonable to require a prefix of the parameters 
>> are specified.
>>
>> e.g. int fun(int a, int b = 1, int c = 2, int d = 3);
>>
>> The user can specify (a), (a, b), (a, b, c) or all of the 
>> parameters, and the arguments can be in any order.
>
> In my experience, one of the greatest benefits of argument 
> re-ordering is that it lets you leave out optional arguments at 
> the call site. For example, in Python, if you wanted to use the 
> default value for every argument except `d`, you could write 
> this:
>
>     fun(a=123, d=456)
>
> ...whereas with this proposal, you'd be required to needlessly 
> repeat the default values for `a` and `b`:
>
>     fun(a: 123, d: 456, b: 1, c: 2);
>
> If this DIP isn't going to allow leaving out optional arguments 
> in all cases, it might be better to simply forbid argument 
> re-ordering entirely (or at least, to leave the issue for a 
> future DIP).

Being able to leave out arguments would be hugely beneficial to 
the caller. You don't need reordering to achieve that though, the 
arguments can still be specified in the correct order while the 
ones with default values are left out:

https://swift.godbolt.org/z/Vhtouf




More information about the Digitalmars-d mailing list