ghc behaves as expected so I assume this is a bug. ---------------------- Forwarded by Dominic Steinitz/HEATHROW/BRITISH AIRWAYS/GB on 25/05/2001 16:56 --------------------------- Dominic Steinitz 25/05/2001 11:30 To: haskell cc: bcc: Subject: IO Errors Can anyone tell me why this behaves as it does? In Hugs, I get C:\My Documents\functional\ldapsck1\buffer.hs Main> main Illegal operation (561 reductions, 1029 cells) Main> If the input file is the one line: 1234567812345678 the output file is: Starting logging 1234567812345678 Error In ghc, the program hangs without even creating a file. Dominic import IO main :: IO () main = do ofh <- openFile "log.txt" WriteMode logMessage ofh "Starting logging" ifh <- openFile "tst.txt" ReadMode let loop = do b <- try (getBuffer ifh 16) case b of Right msg -> do logMessage ofh msg loop Left e -> if isEOFError e then do logMessage ofh "Finishing logging" hClose ofh else do logMessage ofh "Error" ioError e in loop logMessage :: Handle -> String -> IO () logMessage hd msg = do hPutStrLn hd msg hFlush hd getBuffer :: Handle -> Int -> IO String getBuffer h n = if (n <= 0) then return "" else do c <- hGetChar h cs <- getBuffer h (n-1) return (c:cs) ------------------------------------------------------------------------------------------------- 21st century air travel http://www.britishairways.com ------------------------------------------------------------------------------------------------- 21st century air travel http://www.britishairways.com
participants (1)
-
Steinitz, Dominic J