
I'm not sure if this counts as a bug or a feature... If hGetPS h len encounters an EOF before len, it returns a PackedString containing the remainder of the file. However, if h is already at the end of the file, an exception is raised rather than returning an empty string. To me this is rather counter-intuitive. Since hGetPS already has one way of flagging the EOF condition (returning a string shorter than len), I would prefer to be able (for example) to simply copy a file by a loop such as: cp h1 h2 = do ps <- hGetPS h1 buflen hPutPS h2 ps if lengthPS ps == buflen then cp h1 h2 else return () I know I could just as easily write the same code as: cp h1 h2 = do ps <- hGetPS h1 buflen hPutPS h2 ps eof <- hIsEOF h1 if not eof then cp h1 h2 else return () but since the first should be as fast as the second, I don't see why it shouldn't be made safe. -- David Roundy http://www.abridgegame.org
participants (1)
-
David Roundy