This opinion might be an exception in this discussion, but I wouldn't mind restoring the old model, where unlabelled 1-tuples are equivalent to the type ((Int) === Int
), with the difference that the contraversial .0
member (which just returns self
) is disabled.
(Or perhaps we could keep .0
: there was recent discussion about finding an identity keypath, this could be a good candidate, since it can't be shadowed)
This model nicely avoids the semantic issue of bracketing vs tuple creation, since (4 + 4) * 2
defines the same order of operations, and is semantically correct, for either mental model.
Given the new conversion rules noted in the opening post, I would expect this to be compiler friendly, and it seems user-friendly, too.