
On 11 January 2005 09:00, Sebastian Sylvan wrote:
On Mon, 10 Jan 2005 17:12:44 -0000, Simon Marlow
wrote: Not a problem. Have you looked at the streams proposal?
I've missed most of the discussion on this, so if someone could just clarify the reasons for a few things I find peculiar:
* Prefixing function names with their types, not necessary with qualified imports.
I agree with this.
* Why not put isEOS in the InputStream class since it doesn't make sense for OutputStreams?
I think so, and there's a comment to that effect in the prototype code.
* Why not introduce an additional class BufferedStream containing the the Buffering-functions (instead of having them in Stream and resorting to weird failure-patterns for non-buffered streams): setBufferMode :: s -> BufferMode -> IO () getBufferMode :: s -> IO BufferMode flush :: s -> IO () sync :: s -> IO Bool Where setBufferMode is not allowed to "fail" (by returning False). If for some reason it does fail an exception is thrown. Same thing with getBufferMode. It will return a Buffering or throw an exception (not return "NoBuffering" instead of a failure).
The prototype code has a separate Buffered class, with TextOutputStream an instance of it. I've been wondering whether having a generic buffering layer might be possible/desirable too, so you could do buffered binary I/O. Anyway, it would be good to record comments and suggestions like this on the wiki page (http://www.haskell.org/hawiki/HaskellStreamIO). Cheers, Simon