
#9582: Associated Type Synonyms do not unfold in InstanceSigs -------------------------------------+------------------------------------- Reporter: | Owner: andreas.abel | Status: new Type: bug | Milestone: Priority: normal | Version: 7.8.3 Component: Compiler | Keywords: InstanceSigs (Type checker) | TypeFamilies Resolution: | Architecture: Unknown/Multiple Operating System: | Difficulty: Unknown Unknown/Multiple | Blocked By: Type of failure: | Related Tickets: None/Unknown | Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Comment (by simonpj): It's not just type families. You'd also expect that re-ordering the constraints in a qualified context would make no difference: {{{ expected: (Eq a, Num a) => a -> a actual: (Num a, Eq a) => a -> a }}} I think the Right Thing is to use `TcUnify.tcSubType`, twice. It checks that t1 is more polymorphic than t2; so you can call it with t1,t2 and with t2,t1. It instantiates one type, skolemises the other, and does full constraint solving. Look at other calls to `tcSubType` to see how it is used. Simon -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9582#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler