6.14.10.5 Soft Ports

A soft port is a port based on a vector of procedures capable of
accepting or delivering characters. It allows emulation of I/O ports.

Scheme Procedure: make-soft-portpv modes

Return a port capable of receiving or delivering characters as
specified by the modes string (see open-file). pv must be a vector of length 5 or 6. Its
components are as follows:

procedure accepting one character for output

procedure accepting a string for output

thunk for flushing output

thunk for getting one character

thunk for closing port (not by garbage collection)

(if present and not #f) thunk for computing the number of
characters that can be read from the port without blocking.

For an output-only port only elements 0, 1, 2, and 4 need be
procedures. For an input-only port only elements 3 and 4 need
be procedures. Thunks 2 and 4 can instead be #f if
there is no useful operation for them to perform.

If thunk 3 returns #f or an eof-object
(see eof-object? in The Revised^5 Report on
Scheme) it indicates that the port has reached end-of-file.
For example: