[GHC] #15928: Reduction stack overflow when using "coerce"
GHC
ghc-devs at haskell.org
Fri Nov 23 22:04:21 UTC 2018
#15928: Reduction stack overflow when using "coerce"
-------------------------------------+-------------------------------------
Reporter: harendra | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone: 8.6.3
Component: Compiler | Version: 8.6.2
Resolution: | Keywords:
Operating System: MacOS X | Architecture:
Type of failure: Compile-time | Unknown/Multiple
crash or panic | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by simonpj):
Actually the error message is quite informative, isn't it? It says
that GHC is trying to solve
{{{
Coercible
((Stream Identity a -> Identity r) -> Identity r)
((Stream Identity a0 -> Identity r) -> Identity r)
}}}
Well the `->` and `Identity` parts are easy. That leaves us with
proving
{{{
Coercible (Stream Identity a)
(Stream Identity a0)
}}}
How can we do that? Aha! Unwrap the newtype (on both sides). That givs
us
{{{
Coercible (forall r. (Stream Identity a -> Identity r) -> Identity
r)
(forall r. (Stream Identity a0 -> Identity r) -> Identity
r)
}}}
How can we prove that? Well, we can dive under the `forall` to give
{{{
Coercible
((Stream Identity a -> Identity r) -> Identity r)
((Stream Identity a0 -> Identity r) -> Identity r)
}}}
And now we are back where we began.
This known incompleteness
is described in Section 5.3.1 of [https://www.microsoft.com/en-
us/research/publication/safe-zero-cost-coercions-haskell/
Safe zero-cost coercions in Haskell]. I don't know how to solve it; the
reduction-stack bound gives
a decent diagnosis. I grant that what seems decent to me may seem very
different to a Haskell programmer. But I don't yet know how to do better.
Does the explanation help?
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15928#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list