standard-input-port, standard-output-port, standard-error-port - fresh standard I/O ports

LIBRARY

(import (rnrs))                     ;R6RS
(import (rnrs io ports))            ;R6RS

SYNOPSIS

(standard-input-port)
(standard-output-port)
(standard-error-port)

DESCRIPTION

Returns a fresh binary port connected to standard input, standard output or standard error respectively. The first returns an input port and the latter two return output ports.

Whether the port supports the port-position(3scm) and set-port-position!(3scm) operations is implementation-dependent.

RETURN VALUES

Returns a single value; a fresh port.

EXAMPLES

The following program converts its standard input from ISO-8859-1 to UTF-8 on its standard output.

(import (rnrs))

(call-with-port
    (transcoded-port (standard-input-port)
                     (make-transcoder (latin-1-codec)))
  (lambda (inp)
    (call-with-port
        (transcoded-port (standard-output-port)
                         (make-transcoder (utf-8-codec)))
      (lambda (outp)
        (let lp ()
          (let ((c (get-char inp)))
            (unless (eof-object? c)
              (put-char outp c)
              (lp))))))))

APPLICATION USAGE

This is used in application that need binary I/O on the standard input, output and error. It can also be used to create transcoded ports for when the default transcoder on current-input-port(3scm) etc is not desired.

RATIONALE

These procedures make it possible to do binary I/O on standard input, output and error.

COMPATIBILITY

These procedures are unique to R6RS. There is nothing similar in R7RS but some implementations will, as an extension, allow binary I/O on textual ports. Chibi-Scheme is an example of such an implementation.

ERRORS

This procedure can raise exceptions with the following condition types:
&assertion (R6RS)
The wrong number of arguments was passed.

SEE ALSO

current-input-port(3scm), make-transcoder(3scm)

STANDARDS

R6RS

HISTORY

These procedures are new to the reworked I/O in R6RS.

AUTHORS

This page is part of the scheme-manpages project. It includes materials from the RnRS documents. More information can be found at https://github.com/schemedoc/manpages/.

BUGS

Programs should use flush-output-port(3scm) or close-port(3scm) on these ports before exiting, or use call-with-port(3scm). The ports can be buffered and not all implementations flush open ports at exit.


Markup created by unroff 1.0sc,    March 04, 2023.