Hello all, Thanks for your replies on our previous posts. To avoid the lazy behaviour, we tried to write our own IO module "IOExts2" which basically redifnes readFile, writeFile and appendFile to make sure they use binary-mode and strict behaviour. The libary is as follows: ---------- module IOExts2(readFile', writeFile', appendFile') where import IO import IOExts readFile' :: String -> IO String readFile' inputfile = do readhandle <- openFileEx inputfile (BinaryMode ReadMode) x <- hGetContents readhandle seq x (return x) {- seq x (do hClose readhandle return x) -} writeFile' :: String -> String -> IO() writeFile' outputfile text = seq text (writeFile'' outputfile text) writeFile'' :: String -> String -> IO() writeFile'' outputfile text = do writehandle <- openFileEx outputfile (BinaryMode WriteMode) hPutStr writehandle text hFlush writehandle hClose writehandle appendFile' :: String -> String -> IO() appendFile' outputfile text = seq text (appendFile'' outputfile text) appendFile'' :: String -> String -> IO() appendFile'' outputfile text = do appendhandle <- openFileEx outputfile (BinaryMode AppendMode) hPutStr appendhandle text hFlush appendhandle hClose appendhandle --------------- Yet, there's still one problem left with readFile'. The handles of appendFile' and writeFile' are properly closed, but when I try to close the handle used for reading (as shown by the parts commented above) and try the following small test, which uses a file "123.txt" that consists of the string "blaat" only a "b" is outputted. When I do not close the handle, the entire string "blaat" is outputted. test = do x <- readFile' "123.txt" putStr x Regards, Niels Reyngoud