Tuple DIP

aberba karabutaworld at gmail.com
Sat Jan 13 19:43:48 UTC 2018


On Friday, 12 January 2018 at 22:44:48 UTC, Timon Gehr 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


When I raised this feature for D, suggestions on the use of () 
instead of {} got me concerned. All languages that I know to have 
this feature (known as destructuring) use curly braces. Thats 
what kotlin and JavaScript (that I know have support) use. Let's 
not be Rust that goes with different syntax without any technical 
advantage. curly braces are more common (So to speak).

auto (name, email) = fetchUser();
    vs
auto {name, email} = fetchUser();




More information about the Digitalmars-d mailing list