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();