[Haskell-cafe] Coercible between data A a b = A a b and (a, b)

Brandon Allbery allbery.b at gmail.com
Mon Feb 25 17:22:10 UTC 2019


Also worth remembering here is that ghc will often unpack such things if it
can determine it can do so (but only with optimization iirc), so there is
no guarantee that the two will be representationally equivalent even
without pragmas.

On Mon, Feb 25, 2019 at 10:17 AM Oleg Grenrus <oleg.grenrus at iki.fi> wrote:

> Two data types are `Coercible` (as in Data.Coerce) if their representation
> in memory is the same: they are representiationally equivalent You ask for
> looser structural isomorphism, consider e.g.
>
>     data B b = B {-# UNPACK #-} !Int b
>
> and
>
>     (Int, b)
>
> The values of these types have quite different representation/memory
> layout.
>
> - Oleg
>
> On 25 Feb 2019, at 16.38, Georgi Lyubenov <godzbanebane at gmail.com> wrote:
>
> Greetings!
>
> Is there any reason behind/what is the reason behind
> ```
> data A a b = A a b
> ```
> and
> ```
> (a, b)
> ```
>
> not being coercible?
>
> And in general all n-ary constructors not being coercible to one another?
>
> Thanks in advance!
>
> =======
> Georgi
>
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.
>
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.



-- 
brandon s allbery kf8nh
allbery.b at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20190225/a7994618/attachment.html>


More information about the Haskell-Cafe mailing list