[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: A few random I/O proposals

On Wed, 27 May 92 15:58:01 EDT, "Andrew Wilcox" <andrew@astro.psu.edu> said:

> I would suggest adapting the idea of an output procedure used in Marc
> Feeley's genwrite.scm from SLIB to make a more general make-output-
> port procedure:

>      (make-output-port OUTPUT)

>      make-output-port returns an output port.  When an object is
>      written to the output port, OUTPUT is called one or more times
>      with one string argument, the successive substrings of the
>      textual transformation of the object.  OUTPUT may return #f to
>      stop the transformation.

> This way you can write open-output-string, open-truncated-output-
> string, or other procedures you want.

I don't really understand this.  Output ports should accept
characters, not arbitrary objects.  And they shouldn't really be able
to stop anything.  But I like the idea of being able to create a port
from a function - how about

(make-output-port WRITE-PROC CLOSE-PROC)

WRITE-PROC must be a procedure which takes a single argument, and
CLOSE-PROC must be a procedure which takes no arguments.
Make-output-port returns an output port.  When a character is written
to the output port, WRITE-PROC is called with that character as its
argument.  When the output port is closed, CLOSE-PROC is called with
no arguments.

Of course, there would also be a make-input-port, with WRITE-PROC
replaced by a READ-PROC of no arguments.

david carlton,
who also thinks that ports should be disjoint from other types