The Haskell report says that in
newtype T = C t
T uses the same representation as t, and so coercions
between the two can be implemented without execution
time overhead. Furthermore, the report says that
"unlike type synonyms, newtype may be used to define
recursive types."
How are these two statements reconciled for recursive
types such as
newtype Foo = F Foo
or
newtype A = MkA B
newtype B = MkB A ?
Admittedly, you could never construct a value of these
types, but, even so, what do these types mean?
Chris