On Wed, 26 Sep 2012 15:54:44 -0400, foobar <f...@bar.com> wrote:
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.
I'm not exactly sure what this is supposed to be (your struct I don't
think is implemented correctly), but are you asking to be able to assign a
struct from a tuple?
Shouldn't tupleof help here?
-Steve