Tuple DIP
Timothee Cour
thelastmammoth at gmail.com
Sat Jan 13 22:54:24 UTC 2018
it would also solve a long-standing issue of passing runtime optional
arguments along with variadic templates, eg:
current:
```
# current: bad, causes template bloat (1 template per call site)
void log(string file=__FILE__, int line=__LINE__, T...)(T a);
# usage:
log(1, "foo");
# with this DIP
void log(T...)(T a, string file=__FILE__, int line=__LINE__);
log((1, "foo"));
```
still not ideal as syntax is not as nice, but at least it removes template bloat
On Fri, Jan 12, 2018 at 2:44 PM, Timon Gehr via Digitalmars-d
<digitalmars-d at puremagic.com> wrote:
> As promised [1], I have started setting up a DIP to improve tuple ergonomics
> in D:
>
> https://github.com/tgehr/DIPs/blob/tuple-syntax/DIPs/DIP1xxx-tg.md
>
>
> This DIP aims to make code like the following valid D:
>
> ---
> auto (a, b) = (1, 2);
> (int a, int b) = (1, 2);
> ---
>
> ---
> foreach((sum, diff); [(1, 2), (4, 3)].map!((a, b) => (a + b, a - b)))
> {
> writeln(sum, " ", diff);
> }
> /+ prints:
> 3 -1
> 7 1
> +/
> ---
>
> Before going ahead with it, I'd like some preliminary community input:
>
> - I'm not yet completely satisfied with the DIP.
> (See section "Limitations".)
> Please let me know suggestions or further concerns you might have.
>
>
> - There are good example use cases missing. While I'm confident I could
> invent a few of them given a little time, I thought maybe I can
> expedite the process and make the point more convincingly by asking
> for use cases you encountered in your own code. The DIP already
> contains an example due to bearophile.
>
>
> [1] https://forum.dlang.org/post/or625h$2hns$1@digitalmars.com
More information about the Digitalmars-d
mailing list