← Back to context

Comment by kccqzy

4 hours ago

No you don’t need coercion. You only need polymorphism. The type of `panic!()` could be an arbitrary U, which unifies just fine with the type T here.

Generally languages with such polymorphism have a never type only because they don’t also support impredicative polymorphism.

And then once you have `fn foo<T>() -> T`, what do you write in the body that allows it to typecheck?