[GHC] #13242: Panic "StgCmmEnv: variable not found" with ApplicativeDo and ExistentialQuantification
GHC
ghc-devs at haskell.org
Tue Feb 21 17:01:37 UTC 2017
#13242: Panic "StgCmmEnv: variable not found" with ApplicativeDo and
ExistentialQuantification
-------------------------------------+-------------------------------------
Reporter: ljli | Owner: simonmar
Type: bug | Status: new
Priority: highest | Milestone: 8.0.3
Component: Compiler | Version: 8.1
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by simonmar):
@simonpj One position is to say that it should typecheck if the desugaring
(according to the paper) is type-correct, which in this case it isn't.
And in fact I think that's what happens:
{{{
do1.hs:12:8: error:
• Couldn't match expected type ‘t0’
with actual type ‘(a -> Int, a)’
because type variable ‘a’ would escape its scope
This (rigid, skolem) type variable is bound by
a pattern with constructor: A :: forall a. a -> (a -> Int) -> A,
in a pattern binding in
'do' block
at ado1.hs:12:3-9
• In the pattern: (f1, x1)
In the expression:
do { p1 <- pure p;
A x1 f1 <- pure p1;
q1 <- pure q;
A x2 f2 <- pure q1;
return (f1 x1, f2 x2) }
In an equation for ‘st’:
st p q
= do { p1 <- pure p;
A x1 f1 <- pure p1;
q1 <- pure q;
A x2 f2 <- pure q1;
return (f1 x1, f2 x2) }
• Relevant bindings include
f1 :: a -> Int (bound at ado1.hs:12:8)
x1 :: a (bound at ado1.hs:12:5)
}}}
Arguably we should do something more clever, but at least it's sound. So
I'm less worried about this case than the original one which typechecks
but generates invalid Core.
I'll investigate to see if I can make it typecheck the rhs's separately
from the patterns.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13242#comment:7>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list