
#11523: Infinite Loop when mixing UndecidableSuperClasses and the class/instance constraint synonym trick. -------------------------------------+------------------------------------- Reporter: ekmett | Owner: Type: bug | Status: new Priority: highest | Milestone: 8.0.1 Component: Compiler (Type | Version: 8.0.1-rc1 checker) | Keywords: Resolution: | UndecidableSuperClasses Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: GHC rejects | Test Case: valid program | polykinds/T11523 Blocked By: | Blocking: Related Tickets: #11480 | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by simonpj): The undecideable superclasses thing has the following property: * If you have a type error (a wanted that genuinely cannot be solved) * and you have an infinite number of superclasses then the typechecker will diverge, or at least complain about too many iterations. In this case, do you think that there is a finite tower of superclasses? I get {{{ [G] Category p +-> {add superclasses} Functor p Dom p ~ Op p Cod p ~ Nat p (->) Ob (Op p) ~ Ob p +-> {add superclasse of Functor} Category (Dom p) Cateogory (Cod p) }}} and now we merrily go round. Adding `p ~ Op (Op p)` will help, because `Dom p ~ Op p`. But we are still going to get `Cateogry (Cod p)`, `Category (Cod (Cod p))` and so on. Is that really what you intend? Actually we get a hand without "too many iterations", which is odd, but still I'd like to know the answer to the above. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11523#comment:14 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler