On Tue, 20 Oct 2009 22:45:53 -0400, Andrei Alexandrescu <seewebsiteforem...@erdani.org> wrote:
Robert Jacques wrote:
On Tue, 20 Oct 2009 20:38:33 -0400, Leandro Lucarella <llu...@gmail.com> wrote:
Yes, D support for tuples is way far from ideal.
How so? I think this is merely the difference between a library type in a flexible language and a built-in type in an inflexible language. I mean the example was essentially:
In D:
 Apple a
 Apple b
 Orange c
  assert(a != c); // Error: incompatible types Apple and Orange
 In SOL:
 Apple a
 Apple b
 Apple c
  assert(a != c); // ok, both a and c are apples.
Now, if SOL allowed tuples to do things you can't do today in D, like assign a tuple to a struct with the same signature, then this might be a point. But that wasn't the example given.

I also don't understand all the argument about structural vs. name equivalence.

Andrei

The original thread stated that D's value tuples (as opposed to type tuples) were far from ideal, because it's not a built-in type. So two people could make value tuple structs types that were incompatible with each other. (One counter to this is it's simple to define a templated opAssgin method that works correctly. Another counter is to relate this problem to typedefs). My issue was with the example comparing D to some-other-language (SOL). The issue was that only the built-in value-tuple type in SOL was shown, and not a value-tuple interfacing with something else that wasn't the built-in value-tuple. This indicates that SOL isn't flexible/expressive enough to have library value-tuple-types, or the problems with D's value-tuple type solution.

Reply via email to