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

Reply via email to