<div dir="auto">I had an idea for how we might be able to unpack coercions in a limited and conservative way that doesn't get into the general problems of unpacking constraints. Would this make sense?<div dir="auto"><br></div><div dir="auto">1. Move the definition of Coercion from Data.Type.Coercion to GHC.Magic</div><div dir="auto"><br></div><div dir="auto">2. Magically change the type of the Coercion constructor from</div><div dir="auto"><br></div><div dir="auto">  Coercion :: Coercible a b => Coercion a b</div><div dir="auto"><br></div><div dir="auto">to</div><div dir="auto"><br></div><div dir="auto">  Coercion :: a ~R# b => Coercion a b</div><div dir="auto"><br></div><div dir="auto">Now a strict Coercion field will unpack to nothing.</div></div>