On Tuesday, 9 February 2016 at 16:00:09 UTC, Marc Schütz wrote:
2. Tuples use structural typing, not nominal typing.

This has no relevance for the question at hand.

It does if you allow casting and to use tuples a types in aggregates. The language becomes less strongly typed.

3. They are identity-less. If you can take reference and compare, they no longer are identity-less.

Like value types in general, nothing special about tuples here.

I don't know what you mean by that. D doesn't provide proper value types. If you can compare identities (address) then it is not a value, but an object.

I believe it's more because the concept is more frequently used in functional programming languages, for which immutability is not surprising. Other languages do have mutable tuples, e.g. Swift and C++11 (std::tuple).

C++ doesn't have real tuples. I don't know the details of Swift regarding tuples, but Swift is an OO language that does not aim for high performance or very strong typing.

As said above, wanting to avoid spilling is not a reason to disallow spilling. Besides, fixed-size arrays seem more similar to SIMD registers, and they don't have the restrictions you tuples to have.

Well, I disagree. There is very little reason to encourage people to use tuples for storage, you end up with a weaker typed language and less performant code.

(You can do various types of packing in registers too, depends on the CPU.)

Reply via email to