On Monday, 11 January 2021 at 19:25:06 UTC, Paul Backus wrote:
On Monday, 11 January 2021 at 18:02:19 UTC, Ola Fosheim Grøstad
wrote:
On Monday, 11 January 2021 at 17:48:13 UTC, Paul Backus wrote:
Why? I'd say that an `immutable(Tuple)` should be immutable,
and a `Tuple` should be mutable, as is the case with
literally every other type in D.
Tuples are usually immutable, it brings more correctness.
I agree that immutability has benefits, but I don't see why
tuples should be singled out for special treatment in this
regard. Why is immutability more important for tuples than for
any other kind of data?
Well, maybe not more important, but at least consistent with
mathematics. :-)
I guess my real reason is that I am not ready to reimplement the
type system and add one-level "readonly" semantics to the
language at this point, so just preventing writable reference
from leaking out seems one temporary approach that could work.
What I don't want is to have a tuple accidentally modified, so if
one wants to modify the tuple then one should bind it to
variables through destructuring? I guess that is a good reason?
The caller of a function can decide to set up the return value
from a function for mutation by destructuring the tuple.
I guess that would be the "idiomatic" pattern...