Isn't it wonderful how real users find bugs so much faster than
implementors. Thanks Ralf. It's my fault.  Now fixed in my copy.  
Unfortunately there's no workaround.

I can see we're going to have to push out 2.05 in some form.

Simon

| From: Ralf Hinze <[EMAIL PROTECTED]>
| Date: Tue, 17 Jun 1997 17:16:10 +0200 (MET DST)
| Dear Glasgow-Wizards,
| 
| my first experiment with second-order types failed. The following piece
| of code causes ghc to panic.
| 
| ===============================================================================
| 
| > module SOL                  (  module SOL  )
| > where
| 
| > import GlaExts
| 
| > data SeqView t a              =  Null
| >                               |  Cons a (t a)
| 
| > class PriorityQueue q where
| >     empty                   :: (Ord a) => q a
| >     single                  :: (Ord a) => a -> q a
| >     insert                  :: (Ord a) => a -> q a -> q a
| >     meld                    :: (Ord a) => q a -> q a -> q a
| >     splitMin                        :: (Ord a) => q a -> SeqView q a
| >     insert a q              =  single a `meld` q
| 
| > toOrderedList q             =  case splitMin q of
| >    Null                     -> []
| >    Cons a q                 -> a : toOrderedList q
| > insertMany x q              =  foldr insert q x
| > pqSort q x                  =  toOrderedList (insertMany x q)
| 
| > check                               :: (PriorityQueue q) => (Ord a => q a) ->
|   IO ()
| > check empty                 =  do
| >     putStr "*** sorting\n"
| >     out (pqSort empty [1 .. 99])
| >     out (pqSort empty [1.0, 1.1 ..99.9])
| 
| > out                         :: (Num a) => [a] -> IO ()
| > out x | sum x == 0          =  putStr "ok\n"
| >       | otherwise           =  putStr "ok\n"

Reply via email to