<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Hi,</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">I've started looking into using `Data.Coerce` (and the `Coercible` type-class) for a personal project and was wondering why coercing between `Int` and `Word` is not allowed? I don't see any fundamental reason why this shouldn't work...</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Perhaps, it's just a matter of GHC's implementation details leaking out? IIRC internally GHC has separate `RuntimeRep`/`PrimRep` for a `Word#` and for an `Int#`. If that's the case, would it make sense to unify these? Their actual runtime representation should be the same and I'd expect most (all?) of their differences should be attached to `PrimOp`s.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">And that leads me to another question--what exactly goes wrong here:</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">```</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">data Foo = Foo Int#<br>data Bar = Bar Int#<br><br>test :: Bar<br>test = coerce (Foo 42#)<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">```</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Which fails with: "<span style="font-family:Arial,Helvetica,sans-serif">Couldn't match representation of type ‘Foo’ with that of ‘Bar’</span><span style="font-family:Arial,Helvetica,sans-serif"> arising from a use of ‘coerce’"</span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><span style="font-family:Arial,Helvetica,sans-serif"><br></span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><span style="font-family:Arial,Helvetica,sans-serif">Perhaps I'm just misunderstanding exactly how `Coercible` works?</span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><span style="font-family:Arial,Helvetica,sans-serif"><br></span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Thanks in advance!</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">- Michal</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">PS. The ability to coerce through things like lists is amazing :)</div></div>