[m-dev.] streams proposal

Ian MacLarty maclarty at cs.mu.OZ.AU
Mon Jan 23 10:47:31 AEDT 2006


I've come up with a new proposal for a streams library.  I believe this 
proposal addresses some of the shortcomings of the streams library in 
extras (for example one can define an efficient version of write_string 
that doesn't have to call write_char).

In my proposal an input or output stream is a typeclass with three type 
variables: the stream type, a `unit' type which is the type of the 
things that can be read or written to the stream, and a `state' type 
which is the type of the state that gets updated when reading or 
writing from the stream (this would typically be the io state, but 
could also be, for example, a string buffer).

I propose that the stream typeclasses go in a new library module called 
stream and that appropriate instances be defined in io.m and 
term_to_xml.m.  I think we should leave the IO operations in io.m as 
only working on io.input_stream and io.output_stream (for performance 
reasons), but io.input_stream and io.output_stream will be instances of 
the stream typeclass, so application developers will be able to develop 
predicates that work with general streams as well as io.input_stream 
and io.output_stream.

The attached file streams.m contains a rough draft of what the streams 
module will look like.

Comments welcome.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: stream.m
Type: application/octet-stream
Size: 4414 bytes
Desc: not available
URL: <http://lists.mercurylang.org/archives/developers/attachments/20060123/f4cf438c/attachment.obj>

More information about the developers mailing list