Ticket #179 (closed bug: fixed)
Instance match failure on openTypeKind
|Reported by:||simonpj||Owned by:||simonpj|
|Component:||Compiler (Type checker)||Version:||6.4.1|
|Type of failure:||Difficulty:||Unknown|
|Test Case:||tc175||Blocked By:|
Description (last modified by simonmar) (diff)
Consider instance Show (a->b) where ... foo x = show (\ _ -> True) This fails with: No instance for (Show (t -> Bool)) arising from use of `show' at Foo.hs:5 Reason: the type of (\_ -> True) is (t -> Bool) where t has an "openTypeKind". It's possible that the function will be applied to say an Int#, and the openTypeKind records that this is OK. BUT, the instance decl Show (a->b) has a::liftedTypeKind, and that doesn't match an openTypeKind type variable. This bug relates to GHC's unsatisfactory treatment of the variants of kind "type", for which there are at least 2 other SourceForge bugs registered (753780 and 753777). It's very obscure, so I'm not going to fix it today.
Note: See TracTickets for help on using tickets.