oleg@pobox.com wrote:
There appears to be a problem with GHC's handling of multi-parameter constraints with functional dependencies in the context of rank-2 types. The problem is not present in Hugs.
Let us first consider a simple example:
module Test where class Foo a
class Bar a
data Obj = Obj
instance Bar Obj
instance (Bar a) => Foo a
I have tried to write code myself like in the last line, stating that any instance of one class should also be an instance of another class. But Hugs would complain about it and so it does about the above: Prelude> :l Test Reading file "Test.hs": ERROR Test.hs:10 - syntax error in instance head (constructor expected) This is the Feb2001 version of hugs running on RedHat9. I seem to remember that the Haskell Report indeed states that the right side of an instance declaration should contain a type constructor. So I'm puzzled as to why the above works for you... regards, %!PS % -John Tromp (http://www.cwi.nl/~tromp/) 42 42 scale 7 9 translate .07 setlinewidth .5 setgray/c{arc clip fill setgray}def 1 0 0 42 1 0 c 0 1 1{0 3 3 90 270 arc 0 0 6 0 -3 3 90 270 arcn 270 90 c -2 2 4{-6 moveto 0 12 rlineto}for -5 2 5{-3 exch moveto 9 0 rlineto}for stroke 0 0 3 1 1 0 c 180 rotate initclip}for showpage