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 <[email protected]> 
> 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

_______________________________________________
Glasgow-haskell-users mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to