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.
Returns a port capable of receiving or delivering characters as specified by the modes string (see open-file). vector must be a vector of length 5. Its components are as follows:
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
(see eof-object? in Revised(5) Scheme) it indicates
that the port has reached end-of-file. For example:
If it is necessary to explicitly close the port when it is garbage collected, (see add-finalizer).
(define stdout (current-output-port)) (define p (make-soft-port (vector (lambda (c) (write c stdout)) (lambda (s) (display s stdout)) (lambda () (display "." stdout)) (lambda () (char-upcase (read-char))) (lambda () (display "@" stdout))) "rw")) (write p p) ⇒ #<input-output-soft#\space45d10#\>