Tuple DIP

Timon Gehr timon.gehr at gmx.ch
Mon Feb 19 23:43:57 UTC 2018


On 20.02.2018 00:19, timotheecour wrote:
> 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:
> ...
> 
> Would this DIP allow array unpacking?
> ...

Yes, but would not be built-in.

> eg, see this rust snippet from 
> https://gist.github.com/anonymous/9cfc3d1b057f7a137ccbfb94bf4bfcef
> 
> ```
> fn main() {
>    let (infile, colname, repl, outfile) = 
> std::env::args().skip(1).tuples().next().expect("Invalid args\n");
> }
> ```
> 
> what would be the D equivalent under this DIP? (just for the array 
> unpacking part )
> 
> 
> 

For a suitable implementation of "unpack":

void main(){
     auto (infile, colname, repl, outfile) = 
args[1..$].unpack!4("Invalid args\n");
}

Unfortunately, there is no good way to get rid of "4", as D does not 
have backwards type inference.


More information about the Digitalmars-d mailing list