The Dylan Streams library aims to provide:
A generic, easy-to-use interface for streaming over sequences and files. The same high-level interface for consuming or producing is available irrespective of the type of stream, or the types of the elements being streamed over.
Efficiency, especially for the common case of file I/O.
Access to an underlying buffer management protocol.
An extensible framework. Other areas of functionality that require a stream interface should be easy to integrate with the library.
The proposal presents the design of a Streams library that meets these goals using Dylan's built-in sequences and a buffered disk file interface.
The proposal does not address a number of related issues, including:
A standard object-printing package such as Smalltalk's
printOn: or Lisp's
print-object, or a formatted printing
facility such as Lisp's
format. Additional libraries are expected
to provide these facilities.
General object dumping and loading.
A comprehensive range of I/O facilities for using memory-mapped files, network connections, and so on. Such facilities should be easy to add to the Streams library because of its extensible framework.
An interface for naming files.
An interface to operating system functionality, such as file renaming or deleting operations.