> Out of curiousity, it's a bit strange that >=20 > > data D =3D D !Int > > myD =3D D {} >=20 > in invalid, but >=20 > > newtype N =3D N !Int > > myN =3D N {} >=20 > is not. The second example is also invalid: the newtype declaration is disallowed by the grammar. (incedentally, it looks like this example triggers a bug in nhc98). Cheers, Simon