explicitly quantified classes in functions

Simon Peyton-Jones simonpj@microsoft.com
Fri, 5 Apr 2002 00:06:17 -0800

| Ah yes, silly me.  What I had in mind, I suppose, was=20
| something more along the lines of:
| foo :: Double -> (exists q . Foo q =3D> q)

Correct.  Currently you can only express this by wrapping
the existential in a constructor:

	data R =3D forall q. Foo q =3D> MkR q

	foo :: Double -> R

Mark Shields and I wrote a paper about doing more fully
fledged existentials, but it's quite a significant chunk of=20
work to implement.