Coercing between constraints of newtypes
This doesn't work
{-# Language ConstraintKinds #-}
{-# Language GADTs #-}
import Data.Coerce
newtype USD = USD Int
data Dict c where
Dict :: c => Dict c
num :: Dict (Num Int) -> Dict (Num USD)
num = coerce
but this does
data NUM a = NUM (a -> a -> a)
num' :: NUM Int -> NUM USD
num' = coerce
is this a fundamental limitation?
Trac metadata
| Trac field | Value |
|---|---|
| Version | 8.2.1 |
| Type | FeatureRequest |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |