------------------------------------------
type F a = Int
class A a where
foo :: A b => a (F b)
------------------------------------------
GHC - OK
Hugs - Illegal type "F b" in constructor application
This time, I'd say Hugs is wrong (though eliminating that initial
complaint leads back to an ambiguous and unusable method 'foo').
I only just recognized the horrible error message from the first
example.. what Hugs is trying to tell us about is a kind error!
The kind of 'a' in 'F' defaults to '*', but in 'A', 'F' is applied to
'b', which, via 'A b' is constrained to '*->*'. So Hugs is quite
right (I should have known!-).
The error message can be improved drastically, btw:
:set +k
ERROR file:.\hugs-vs-ghc.hs:19 - Kind error in constructor application
*** expression : F b
*** constructor : b
*** kind : a -> b
*** does not match : *
See http://cvs.haskell.org/Hugs/pages/hugsman/started.html and
search for '+k' - highly recommended if you're investigating kinds.
Claus
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe