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
> 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
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