logo       

RE: ghc-6.0 compiler bug: msg#00035

lang.haskell.glasgow.bugs

Subject: RE: ghc-6.0 compiler bug

Yes, this is a known bug, but thank you for reporting it anyway. I'm
going to fix it as part of my next sweep though.

I enclose a message that gives a workaround.

Simon

| -----Original Message-----
| From: glasgow-haskell-bugs-admin@xxxxxxxxxxx
[mailto:glasgow-haskell-bugs-admin@xxxxxxxxxxx] On
| Behalf Of Ch. A. Herrmann
| Sent: 05 June 2003 14:28
| To: glasgow-haskell-bugs@xxxxxxxxxxx
| Subject: ghc-6.0 compiler bug
|
| Hi,
|
| playing around with partial evaluation,
| I encountered the following bug:
|
| 65> ghc --make -fglasgow-exts -package haskell-src Main.hs -o Main
-ddump-splices
| Chasing modules from: Main.hs
| Compiling Power ( Power.hs, ./Power.o )
| Compiling Main ( Main.hs, ./Main.o )
| ghc-6.0: panic! (the `impossible' happened, GHC version 6.0):
| nameModule x {- v a1BE -}
|
| Please report it as a compiler bug to
glasgow-haskell-bugs@xxxxxxxxxxx,
| or http://sourceforge.net/projects/ghc/.
|
------------------------------------------------------------------------
----------
| module Power where
|
| import Language.Haskell.THSyntax
|
| pow :: ExpQ -> Int -> ExpQ
| pow x 0 = [| const 1 |]
| pow x n | n>0 = [| $x * $(pow x (n-1)) |]
|
------------------------------------------------------------------------
----------
| module Main where
|
| import Power (pow)
|
| main = let x = 2 :: Double
| in putStrLn (show ($(pow [|x|] 5)))
|
------------------------------------------------------------------------
----------
| Good luck
| --
| Dr. Christoph Herrmann
| Teaching and Research Assistant
| University of Passau, Germany
| http://www.fmi.uni-passau.de/~herrmann
| _______________________________________________
| Glasgow-haskell-bugs mailing list
| Glasgow-haskell-bugs@xxxxxxxxxxx
| http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs


--- Begin Message ---
Subject: [Template-haskell] RE: ghc-5.05 / template haskell bug
Thomas

Absolutely right! There is a total omission in the TH implementation
for the free 'x' in
\x -> $(power 2 [| x |])

You can get round this in a clunky way by wrapping the whole thing in
$[| |], thus

$([| \x -> $(power 2 [| x |]) |])

This works, but it's not pretty. The Right Thing is to fix it, which I
hope to do.

thanks for pointing this out. TH is pretty subtle

Simon

| -----Original Message-----
| From: Thomas Harke [mailto:harke@xxxxxxxxxxx]
| Sent: 10 March 2003 18:15
| To: glasgow-haskell-bugs@xxxxxxxxxxx
|
| Hi,
|
| while experimenting with template haskell I encountered the
following:
|
| ] ghc --make Main.hs
| ] Chasing modules from: Main.hs
| ] Skipping Power ( Power.hs, ./Power.o )
| ] Compiling Main ( Main.hs, ./Main.o )
| ] ghc-5.05: panic! (the `impossible' happened, GHC version 5.05):
| ] nameModule x {- v a1fV -}
| ]
| ] Please report it as a compiler bug to
glasgow-haskell-bugs@xxxxxxxxxxx,
| ] or http://sourceforge.net/projects/ghc/.
| ]
| ]
| ] make: *** [main] Error 1
|
| This was using a version very recently checked out of CVS (Friday, 14
March)
|
| The files that caused the problem are attached.
|
| --
| Tom Harke
| Computer Science and Engineering Department
| Oregon Graduate Institute
|
| Weiler's Law:
| Nothing is impossible for the man who doesn't have to do it himself

_______________________________________________
template-haskell mailing list
template-haskell@xxxxxxxxxxx
http://www.haskell.org/mailman/listinfo/template-haskell


--- End Message ---
<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise