Should ‘coerce’ be levity polymorphic?
I'm not able to write coerce @Int# @Int# or coerce :: Double# -> Double#, just checking to see if its intentional or not
>>> :set -XTypeApplications
>>> :set -XMagicHash
>>> import Data.Coerce
>>> import GHC.Exts
>>>> :t coerce @Int
coerce @Int :: Coercible b Int => Int -> b
>>> :t coerce @Int#
<interactive>:1:1: error:
Couldn't match a lifted type with an unlifted type
When matching types
b :: *
Int# :: TYPE 'IntRep
<interactive>:1:9: error:
• Expecting a lifted type, but ‘Int#’ is unlifted
• In the type ‘Int#’
In the expression: coerce @Int#
This was needed for #13592.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 8.0.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |