DIP19: Remove comma operator from D and provision better syntactic support for tuples

foobar foo at bar.com
Mon Sep 24 07:59:34 PDT 2012


On Monday, 24 September 2012 at 10:20:01 UTC, Nick Sabalausky 
wrote:
> On Mon, 24 Sep 2012 10:47:38 +0200
> "foobar" <foo at bar.com> wrote:
>> 
>> Nope.
>> One of the ways in math to "build" the positive numbers based 
>> on set theory is via singletons:
>> n := |tuple of empty tuples|
>> so "1" is defined as { {} } whereas "0" is simply {}. That 
>> does not work with the above suggestion. Now, I realize this 
>> is an arguably convoluted math example but it does show that 
>> the treating { {} } as {} is limiting the expressive power of 
>> tuples.
>> 
>
> And int's are limiting compared to mathematical integers. So 
> what?
> So ok, maybe this is limiting from a theoretical standpoint. But
> practically speaking? I dunno. We're not making tuples to 
> emulate
> set theory here, we're just looking for ad-hoc anonymous 
> structs.
>
> Besides, I only said they were logically the same thing, not
> mechanically. I'm only suggesting that a one-element tuple be 
> implicitly
> convertible to/from the type of its element. So there would 
> likely
> still be the different types, it just makes sense that you 
> should be
> able to use one as the other.

I'm a bit confused about what is specifically proposed here:
- Is the suggestion to limit tuples to >1 elements? *This* I'm 
against for practical as well as completeness reasons. Andrei 
already provided one example, and another would be a proper unit 
type. e.g.
void foo(int a) {}
void bar (int b) { return foo(b); }
- Is the suggestion to allow implicit conversion between (T) and 
T?
This brings almost no benefit - (you save two keystrokes?) and 
adds a special case to the language. The added complexity really 
does not justify this.


More information about the Digitalmars-d mailing list