[GHC] #8503: New GeneralizedNewtypeDeriving check still isn't permissive enough

GHC ghc-devs at haskell.org
Wed Nov 20 13:24:09 UTC 2013


#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


More information about the ghc-tickets mailing list