DIP19: Remove comma operator from D and provision better syntactic support for tuples
Jonathan M Davis
jmdavisProg at gmx.com
Thu Sep 27 03:58:35 PDT 2012
On Thursday, September 27, 2012 11:37:10 foobar wrote:
> I do _not_ want to consider two different _structs_ (nominal
> types) as the same type. I would like to get correct tuple
> semantics which means _structural_ typing (I thought I emphasized
> that enough in the OP).
> A tuple is defined by its contained types, *not* its name.
What on earth does structural typing get you here? A tuple is a collection of
values of varying types. If you have Tuple!(X, Y, Z), it defines a tuple
containing the types X, Y, and Z. _All_ tuples with those types will be Tuple!
(X, Y, Z). The _only_ reason that this isn't quite the case is the nonsense
with being able to give names to the fields in a tuple (and adding an alias
this to Tuple should be able to fix that). Being able to create your own tuple
type which you can compare with Tuple simply because it happens to hold the
same types is completely pointless as far as I can tell (but you can still do
it if you really want to). If you want a tuple, then just use
std.typecons.Tuple. Creating another tuple type buys you nothing.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list