[GHC] #9118: Can't eta-reduce representational coercions
GHC
ghc-devs at haskell.org
Sun May 25 18:18:36 UTC 2014
#9118: Can't eta-reduce representational coercions
-------------------------------------+------------------------------------
Reporter: goldfire | Owner:
Type: feature request | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.8.2
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture: Unknown/Multiple
Type of failure: None/Unknown | Difficulty: Unknown
Test Case: | Blocked By:
Blocking: | Related Tickets: #9117
-------------------------------------+------------------------------------
Comment (by goldfire):
I agree with rwbarton on this -- I think the `F1`/`F2` example doesn't
really apply.
But, there remains a problem case:
{{{
newtype Pair a = Mk (a, a)
}}}
We can easily derive `Coercible (Pair Int) ((,) Int Int)`, but it would be
bad to derive `Coercible Pair ((,) Int)`. The problem is that the newtype
definition has a repeated variable on the right, and thus the definition
cannot be eta-reduced. Probably, a sufficiently complicated Core
construction can detect and avoid this case, but I don't think it would be
easy.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9118#comment:6>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list