On 17-Mar-2000, Tom Pledger <[EMAIL PROTECTED]> wrote:
> Marcin 'Qrczak' Kowalczyk writes:
> > Thu, 16 Mar 2000 14:38:30 -0500, Chris Okasaki <[EMAIL PROTECTED]> pisze:
> >
> > > How are these two statements reconciled for recursive
> > > types such as
> > >
> > > newtype Foo = F Foo
> >
> > IMHO simply the only value of this type is bottom. [...]
>
> Shouldn't applying (\(F _) -> ()) differentiate between bottom and
> (F bottom)?
No. See 4.2.3:
| Unlike algebraic datatypes, the newtype constructor N is unlifted,
| so that N _|_ is the same as _|_.
> Do the two statements reconcile trivially in this case, into
> "Foo has the same representation as Foo"?
Yes. So the representation of Foo is unspecified.
--
Fergus Henderson <[EMAIL PROTECTED]> | "I have always known that the pursuit
WWW: <http://www.cs.mu.oz.au/~fjh> | of excellence is a lethal habit"
PGP: finger [EMAIL PROTECTED] | -- the last words of T. S. Garp.