DIP19: Remove comma operator from D and provision better syntactic support for tuples
foobar
foo at bar.com
Wed Sep 26 12:54:44 PDT 2012
On Tuesday, 25 September 2012 at 21:02:49 UTC, Andrei
Alexandrescu wrote:
>
> I agree. That's why I want to take the minimum amount of steps
> to make library tuples work. That minimum amount may be 1, i.e.
> just implement deconstruction.
>
> Andrei
Library tuples have broken semantics.
Tuples supposed to have _structural_ typing which AFAIK can only
be correctly implemented in language.
import std.typecons.TypeTuple;
struct MyTuple(T...)() {}
auto libTup = tuple(123, "hello");
MyTuple myTup = libTup; // broken
This is broken cause structs in D are nominally typed and even
though both pack the same inner-types, they are not equal.
The problem with the lib solution is the confusion and broken
semantics, _not_ the "tuple()" syntax. Sure, it's long and
annoying to type for a [should be] common construct, but tuple
*is* clear and readable, as you pointed out yourself. So syntax
wise, I'm fine with both tuple(...) and a shorter syntax with
some sort of parens-like character. But please, let's get at
least the semantics absolutely right.
I don't have a good suggestion how to fix this with no or minimal
code breakage, but I don't thing that adding broken features the
the mix helps any.
More information about the Digitalmars-d
mailing list