
#8503: New GeneralizedNewtypeDeriving check still isn't permissive enough -------------------------------------+------------------------------------ Reporter: goldfire | Owner: goldfire Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.7 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Unknown/Multiple Type of failure: None/Unknown | Difficulty: Unknown Test Case: | Blocked By: Blocking: | Related Tickets: #8541 -------------------------------------+------------------------------------ Comment (by nomeata): I have something that is roughly working, enough to notice problems. While it successfully prevents `Coercible Fix (Either Int)` from looping or generating recursive dictionaries, it does not help a lot against {{{ newtype Void a = Void (Void (a,a)) foo5 = coerce :: Void () -> () }}} Even with a depth of 20, this filly up my memory quickly, especially trying to print the final constraint. Do we have to live with the fact that there will likely always be ways to make the compiler use too many resources? Or should coercing recursive newtypes require `UndecidableInstances` to be enabled? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8503#comment:27 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler