Pitch: Allow functions with void-params to be called as void-functions

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.