I have experimented with the definition of class assertions in section 4.1.3 in the Haskell 98 report, and found that GHC 4.08 and GHC 5.00.1 (invoked via ``ghc -c Test.hs'') both derive and accept type arguments (in class assertions) that do not have a variable as head. I cannot really imagine where this might hurt, though. By the way, I find that the .hi format of 5.00 is, from a human-readability point of view, in my opinion not optimal in that there is no separator after the __forall-bound variables: r2 :: __forall b (E (PrelBase.String, b)) => b -> PrelBase.Bool; ^ There is no comparison with NHC since NHC still has the ``simple context restriction''. Best regards, Wolfram ========================================================================= module Test where class T a where t :: a b c -> Bool class E a where e :: a -> a -> Bool instance T (,) where t (a,b) = True q1 :: (T a,Eq (a String b)) => a String b -> Bool q1 x = if x == x then t x else True --r1 :: Eq (String, b) => b -> Bool -- derived and accepted by GHC --r1 :: Eq a => a -> Bool -- derived by Hugs98, -- accepted by both Hugs98 and GHC r1 x = q1 ("asd",x) q2 :: (T a,E (a String b)) => a String b -> Bool q2 x = if e x x then t x else True --r2 :: E (String, b) => b -> Bool -- derived and accepted by GHC r2 x = q2 ("asd",x) -- not accepted by hugs +98 _______________________________________________ Glasgow-haskell-bugs mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs