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

Reply via email to