
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