
4 Apr
2002
4 Apr
'02
3:36 p.m.
Why can I not define the following (in ghc):
class Foo p where instance Foo Double where foo :: Double -> (forall q . Foo q => q) foo p = p
From my humble (lack of) knowledge, there seems to be nothing wrong here, but ghc (5.03) complains about unifying q with Double. I *can* write:
class Foo p where instance Foo Double where data T = forall q . Foo q => T q foo :: Double -> T foo p = T p
which is very similar, except that the explicit universal quantification is happening in in the datatype and not the function type. why is the former disallowed? -- Hal Daume III "Computer science is no more about computers | hdaume@isi.edu than astronomy is about telescopes." -Dijkstra | www.isi.edu/~hdaume