6.4.20050215: panic: lookupVers1 MHashTable HT{d}
Remi Turk
rturk at science.uva.nl
Sat Feb 26 21:20:29 EST 2005
Hi,
while trying to modify Data.HashTable to support both IO and ST
without simply copying it, 6.4.20050215 again decided it doesn't
like me:
/tmp/test% touch *.hs
/tmp/test% /var/tmp/ghc/bin/ghc -O -c MHashTable.hs
/tmp/test% /var/tmp/ghc/bin/ghc -O --make CompatHashTable.hs
Chasing modules from: CompatHashTable.hs
Skipping MHashTable ( ./MHashTable.hs, ./MHashTable.o )
Compiling CompatHashTable ( CompatHashTable.hs, CompatHashTable.o )
ghc-6.4.20050215: panic! (the `impossible' happened, GHC version 6.4.20050215):
lookupVers1 MHashTable HT{d}
To trigger it, compilation must actually be performed in two
seperate steps, and the second one must be done using "--make".
"-O" is also a vital ingredient for the panic.
The killing code is attached.
Happy Hacking,
Remi
--
Nobody can be exactly like me. Even I have trouble doing it.
-------------- next part --------------
module CompatHashTable where
import MHashTable (new, HashTable)
import GHC.IOBase (IOArray, IORef)
new' :: IO (HashTable IOArray IORef IO)
new' = new
-------------- next part --------------
{-# OPTIONS -fglasgow-exts #-}
module MHashTable ( new, HashTable ) where
import GHC.IOBase ( IOArray, newIOArray, IORef, newIORef )
class Monad m => MutHash arr ref m | arr -> m, ref -> m
, arr -> ref, ref -> arr where
newMHArray :: (Int, Int) -> a -> m (arr Int a)
newMHRef :: a -> m (ref a)
instance MutHash IOArray IORef IO where
newMHArray = newIOArray
newMHRef = newIORef
newtype HashTable arr ref m = HashTable (ref (HT arr ref m))
data HT arr (ref :: * -> *) (m :: * -> *) = HT { dir :: !(arr Int Int) }
new :: (MutHash arr ref m) => m (HashTable arr ref m)
new = do
dir <- newMHArray (0,42) undefined
table <- newMHRef HT { dir=dir }
return (HashTable table)
More information about the Glasgow-haskell-bugs
mailing list