Pyry Jahkola via swift-evolution <swift-evolution@...> writes:

> On 22 Jun 2016, at 14:47, Charlie Monroe via swift-evolution <swift-
[email protected]> wrote:
> 
> I can live with Never. But the proposed NoReturn is a single-case 
solution and would eventually require a code-breaking change anyway were 
the bottom type implemented under a different name.
> 
> Excuse me, but it seems to me you might be missing one important point 
about the proposal: there's going to be no “the” bottom type — any enum 
with no cases would act as one if the proposal is accepted. The standard 
library would just happen name one to stand as the preferred default.
> In other words (unless I'm mistaken), no compiler magic proposed about 
a specific (`NoReturn` or `Never`) empty enum. All the proposed “magic” 
would be about uninhabited types (link to specific section in the 
proposal) as return types.
> 
> — Pyry

I think a good design would still be to use a single "main" empty type 
throughout the standard library.
Let's look at a silly example:

func swapReturnThrow<T, E>(block: () throws E -> T) throws T -> E where 
T: ErrorType, E: ErrorType

If T is NoReturn or E is NoThrow then swapReturnThrow would return 
NoThrow and throw NoReturn. These scoped empty types were pulled to a 
scope where they make no sense.

This problem does not occur with a single "main" empty type. But then we 
must decide on its name now.
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to