First Draft: Tuple Unpacking Syntax
Meta
jared771 at gmail.com
Fri Jul 25 04:27:53 UTC 2025
This DIP proposes built-in tuple unpacking syntax for D. A sample
of the proposed syntax:
```
import std.typecons : tuple;
(int a, string b) = tuple(1, "2");
assert(a == 1);
assert(b == "2");
auto (a, b) = tuple(1, "2");
static assert(is(typeof(a) == int));
static assert(is(typeof(b) == string));
auto (a, immutable b, c) = tuple(1, "2", 3.0);
static assert(is(typeof(a) == int));
static assert(is(typeof(b) == immutable string));
static assert(is(typeof(c) == double));
```
The DIP is based on Timon Gehr's old DIP for tuple syntax in D
(https://github.com/tgehr/DIPs/blob/tuple-syntax/DIPs/DIP1xxx-tg.md), but is solely limited to support for unpacking; it is not a full tuple-syntax DIP. If the reception and general sentiment for this DIP are positive, further enhancements to add built-in tuple support to D may be proposed in the future.
Thanks to Timon and Nick Treleaven for doing the bulk of the
implementation and conceptual work on this proposal. I mainly
just kickstarted things and am facilitating the DIP process.
The DIP:
https://github.com/MetaLang/DIPs/blob/bf357d16b1bce65ba4ed95a08d146d4015eeb2d7/DIPs/1NNN-JH-TG-NT.md
More information about the dip.development
mailing list