This is sort of the inverse of the SE-0029 implicit tuple splat, isn’t it?
Tuple splat let you pass a single tuple (T1, …, Tn)
as the argument to a function of type (T1, …, Tn) -> U
, but this proposal is asking for the pre-splatted elements of Void
(i.e., an empty argument list) to be accepted as an argument to a function which accepts the un-splatted tuple ((()) -> U
).
This isn’t Void
getting special treatment I don’t think, this is a deliberate mitigation to the impact of SE-0110, which allows any function (T1, …, Tn) -> U
to be passed as an argument to a parameter of type ((T1, …, Tn)) -> U
. As the empty tuple, Void
of course benefits from this convenience, but it works just the same for tuples of arbitrary arity.