On Sunday, 23 September 2012 at 21:51:35 UTC, Nick Sabalausky
wrote:
*Logically* speaking, is there really any difference between a
one-element tuple and an ordinary single value? I don't think
so, and
here's why: What is a tuple, logically speaking? Multiple
values being
handled as if they were a single value. So what's a one-element
tuple?
*One* value being handled as if it were one value - which is
*is*.
Similarly, a zero-element tuple is logically equivalent to void
(or the
one value a void can have: the value void, a concept which has
been
argued in the past that might be useful for D, particularly in
metaprogramming). (I admit this is a little weaker than my
argument
for one-element tuples.)
So perhaps zero- and one-element tuples should be implicitly
convertible back and forth with void and ordinary non-tuple
values,
respectively (polysemous values?), because that's what they
essentially
are.
It's informative to look a bit at the Ocaml language:
- no distinction between 1-tuple and single value:
# 1;;
- : int = 1
# (1);;
- : int = 1
- "void" type is called unit and its notation is the empty
tuple:
# ();;
- : unit = ()
- for some reason tuples can't be indexed in Ocaml