On Sat, Aug 8, 2015 at 5:16 PM, Tom Ellis <tom-lists-haskell-cafe-2013@jaguarpaw.co.uk> wrote:
On Sat, Aug 08, 2015 at 05:13:30PM -0400, Brandon Allbery wrote:
> On Sat, Aug 8, 2015 at 5:11 PM, Tom Ellis <
> tom-lists-haskell-cafe-2013@jaguarpaw.co.uk> wrote:
>
> > No, not at all.  I'm making a much stronger claim than that.  I'm claiming
> > the functionality provided by newtype is completely subsumed by that
> > provided by data.
>
> When did `data` start guaranteeing that the representation of a single
> constructor, strict `data' wrapper around another type is exactly the same
> as the wrapped type?

I make no claims about the operational semantics of existing compilers, but
can you point out a reason why data of a single strict field *shuoldn't* be
compiled in the same way as a newtype?

Because it's a bizarre special case compared to the way `data` works for everything else?

Also, the behavior I described is not something that can just be ignored as an optimization in a particular compiler. It is part of the language specification. In fact, it is the *primary reason* for the existence of `newtype`.

--
brandon s allbery kf8nh                               sine nomine associates
allbery.b@gmail.com                                  ballbery@sinenomine.net
unix, openafs, kerberos, infrastructure, xmonad        http://sinenomine.net