ghc: panic! (the 'impossible' happened)

José Romildo Malaquias j.romildo at gmail.com
Sun Oct 28 13:32:41 CET 2012


On Sun, Oct 28, 2012 at 12:46:28PM +0100, Sjoerd Visscher wrote:
> You can avoid the error by replacing
> 
>   eval :: Exp -> (->) Memory Integer
> 
> with
> 
>   eval :: Exp -> Memory -> Integer
> 
> which should be the same, but apparently isn't internally in GHC. This is definitely a bug.

As I want the "reader applicative" to be explicit in the code, I have
rewritten my code as

  type Reader r a = r -> a

  eval :: Exp -> Reader Memory Integer

which also works.

Partial application of the (->) type constructor also works:

  type Reader r = (->) r

or

  type Reader = (->)

But the following tiggers the bug:

  type Reader r a = (->) r a


> On Oct 28, 2012, at 4:55 AM, José Romildo Malaquias <j.romildo at gmail.com> wrote:
> 
> > Today I wrote a small program to experiment with the Applicative
> > class. The program is supposed to use an "applicative reader", similar
> > to a "monad reader", to evaluate arithmetic expressions.
> > 
> > But when compiling the program with ghc-7.6.1, I get the following message:
> > 
> >  $ ghc --make applicative-eval
> >  [1 of 1] Compiling Main             ( applicative-eval.hs, applicative-eval.o )
> >  ghc: panic! (the 'impossible' happened)
> >    (GHC version 7.6.1 for x86_64-unknown-linux):
> >    expectJust cpeBody:collect_args
> > 
> >  Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug
> > 
> > If the line
> > 
> >  eval (Let s a b) = \m -> eval b ((s,eval a m):m)
> > 
> > is commented out, the program compiles without problems.
> > 
> > Is this a known issue with the compiler?
> > 
> > The source code is attached



More information about the Glasgow-haskell-users mailing list