commit dd120c63da5b337fc905b2ffd495d2d3700d87ed
parent 4fb71faaaf6cce91f2e7634317992401331475b3
Author: Wolfgang Corcoran-Mathe <wcm@sigwinch.xyz>
Date: Mon, 5 Feb 2024 02:13:17 -0500
I & O: Reflow paragraphs.
Diffstat:
1 file changed, 216 insertions(+), 233 deletions(-)
diff --git a/doc/r7rs-small/procedures/input-and-output.texinfo b/doc/r7rs-small/procedures/input-and-output.texinfo
@@ -12,48 +12,46 @@
Ports represent input and output devices. To Scheme, an input port is
a Scheme object that can deliver data upon command, while an output
-port is a Scheme object that can accept data.
-Whether the input and output port types are disjoint is
-implementation-dependent.
+port is a Scheme object that can accept data. Whether the input and
+output port types are disjoint is implementation-dependent.
Different @dfn{port types} operate on different data. Scheme
-implementations are required to support @dfn{textual ports}
-and @dfn{binary ports}, but may also provide other port types.
+implementations are required to support @dfn{textual ports} and
+@dfn{binary ports}, but may also provide other port types.
A textual port supports reading or writing of individual characters
-from or to a backing store containing characters
-using @code{read-char} and @code{write-char} below, and it supports operations
-defined in terms of characters, such as @code{read} and @code{write}.
+from or to a backing store containing characters using @code{read-char}
+and @code{write-char} below, and it supports operations defined in
+terms of characters, such as @code{read} and @code{write}.
-A binary port supports reading or writing of individual bytes from
-or to a backing store containing bytes using @code{read-u8} and
-@code{write-u8} below, as well as operations defined in terms of bytes.
-Whether the textual and binary port types are disjoint is
-implementation-dependent.
+A binary port supports reading or writing of individual bytes
+from or to a backing store containing bytes using @code{read-u8}
+and @code{write-u8} below, as well as operations defined in terms
+of bytes. Whether the textual and binary port types are disjoint
+is implementation-dependent.
-Ports can be used to access files, devices, and similar things on the host
-system on which the Scheme program is running.
+Ports can be used to access files, devices, and similar things on
+the host system on which the Scheme program is running.
@deffn procedure call-with-port port proc
It is an error if @var{proc} does not accept one argument.
-The @code{call-with-port}
-procedure calls @var{proc} with @var{port} as an argument.
-If @var{proc} returns,
-then the port is closed automatically and the values yielded by the
-@var{proc} are returned. If @var{proc} does not return, then
-the port must not be closed automatically unless it is possible to
-prove that the port will never again be used for a read or write
-operation.
+The @code{call-with-port} procedure calls @var{proc} with @var{port}
+as an argument. If @var{proc} returns, then the port is closed
+automatically and the values yielded by the @var{proc} are returned.
+If @var{proc} does not return, then the port must not be closed
+automatically unless it is possible to prove that the port will never
+again be used for a read or write operation.
@subheading Rationale:
-Because Scheme's escape procedures have unlimited extent, it is
-possible to escape from the current continuation but later to resume it.
-If implementations were permitted to close the port on any escape from the
-current continuation, then it would be impossible to write portable code using
-both @code{call-with-current-continuation} and @code{call-with-port}.
+Because Scheme's escape procedures have unlimited extent, it
+is possible to escape from the current continuation but later to
+resume it. If implementations were permitted to close the port on any
+escape from the current continuation, then it would be impossible to
+write portable code using both @code{call-with-current-continuation}
+and @code{call-with-port}.
@end deffn
@@ -62,11 +60,10 @@ both @code{call-with-current-continuation} and @code{call-with-port}.
It is an error if @var{proc} does not accept one argument.
-These procedures obtain a
-textual port obtained by opening the named file for input or output
-as if by @code{open-input-file} or @code{open-output-file}.
-The port and @var{proc} are then passed to a procedure equivalent
-to @code{call-with-port}.
+These procedures obtain a textual port obtained by opening the
+named file for input or output as if by @code{open-input-file} or
+@code{open-output-file}. The port and @var{proc} are then passed to
+a procedure equivalent to @code{call-with-port}.
@end deffn
@@ -76,18 +73,17 @@ to @code{call-with-port}.
@deffnx procedure binary-port? obj
@deffnx procedure port? obj
-These procedures return @code{#t} if @var{obj} is an input port, output port,
-textual port, binary port, or any
-kind of port, respectively. Otherwise they return @code{#f}.
+These procedures return @code{#t} if @var{obj} is an input port, output
+port, textual port, binary port, or any kind of port, respectively.
+Otherwise they return @code{#f}.
@end deffn
@deffn procedure input-port-open? port
@deffnx procedure output-port-open? port
-Returns @code{#t} if
-@var{port} is still open and capable of performing input or output, respectively, and @code{#f}
-otherwise.
+Returns @code{#t} if @var{port} is still open and capable of performing
+input or output, respectively, and @code{#f} otherwise.
@end deffn
@@ -95,38 +91,38 @@ otherwise.
@deffnx procedure current-output-port
@deffnx procedure current-error-port
-Returns the current default input port, output port, or error port (an output port),
-respectively. These procedures are parameter objects, which can be overridden with
-parameterize (see @ref{Dynamic bindings}). The initial bindings for these are
-implementation-defined textual ports.
+Returns the current default input port, output port, or error port (an
+output port), respectively. These procedures are parameter objects,
+which can be overridden with parameterize (see @ref{Dynamic bindings}).
+The initial bindings for these are implementation-defined textual
+ports.
@end deffn
@deffn {file library procedure} with-input-from-file string thunk
@deffnx {file library procedure} with-output-to-file string thunk
-The file is opened for input or output
-as if by @code{open-input-file} or @code{open-output-file},
-and the new port is made to be the value returned by
-@code{current-input-port} or @code{current-output-port}
-(as used by @code{(read)}, @code{(write }@var{obj}@code{)}, and so forth).
-The @var{thunk} is then called with no arguments. When the @var{thunk} returns,
-the port is closed and the previous default is restored.
-It is an error if @var{thunk} does not accept zero arguments.
-Both procedures return the values yielded by @var{thunk}.
-If an escape procedure
-is used to escape from the continuation of these procedures, they
-behave exactly as if the current input or output port had been bound
-dynamically with @code{parameterize}.
+The file is opened for input or output as if by @code{open-input-file}
+or @code{open-output-file}, and the new port is made to be the value
+returned by @code{current-input-port} or @code{current-output-port}
+(as used by @code{(read)}, @code{(write }@var{obj}@code{)}, and so
+forth). The @var{thunk} is then called with no arguments. When the
+@var{thunk} returns, the port is closed and the previous default
+is restored. It is an error if @var{thunk} does not accept zero
+arguments. Both procedures return the values yielded by @var{thunk}.
+If an escape procedure is used to escape from the continuation of
+these procedures, they behave exactly as if the current input or
+output port had been bound dynamically with @code{parameterize}.
@end deffn
@deffn {file library procedure} open-input-file string
@deffnx {file library procedure} open-binary-input-file string
-Takes a @var{string} for an existing file and returns a textual
-input port or binary input port that is capable of delivering data from the
-file. If the file does not exist or cannot be opened, an error that satisfies @code{file-error?} is signaled.
+Takes a @var{string} for an existing file and returns a textual input
+port or binary input port that is capable of delivering data from the
+file. If the file does not exist or cannot be opened, an error that
+satisfies @code{file-error?} is signaled.
@end deffn
@@ -135,11 +131,9 @@ file. If the file does not exist or cannot be opened, an error that satisfies @
Takes a @var{string} naming an output file to be created and returns a
textual output port or binary output port that is capable of writing
-data to a new file by that name.
-If a file with the given name already exists,
-the effect is unspecified.
-If the file cannot be opened,
-an error that satisfies @code{file-error?} is signaled.
+data to a new file by that name. If a file with the given name already
+exists, the effect is unspecified. If the file cannot be opened, an
+error that satisfies @code{file-error?} is signaled.
@end deffn
@@ -147,15 +141,14 @@ an error that satisfies @code{file-error?} is signaled.
@deffnx procedure close-input-port port
@deffnx procedure close-output-port port
-Closes the resource associated with @var{port}, rendering the @var{port}
-incapable of delivering or accepting data.
-It is an error
-to apply the last two procedures to a port which is not an input
-or output port, respectively.
-Scheme implementations may provide ports which are simultaneously
-input and output ports, such as sockets; the @code{close-input-port}
-and @code{close-output-port} procedures can then be used to close the
-input and output sides of the port independently.
+Closes the resource associated with @var{port}, rendering the
+@var{port} incapable of delivering or accepting data. It is an error to
+apply the last two procedures to a port which is not an input or output
+port, respectively. Scheme implementations may provide ports which are
+simultaneously input and output ports, such as sockets; the
+@code{close-input-port} and @code{close-output-port} procedures can
+then be used to close the input and output sides of the port
+independently.
These routines have no effect if the @var{port} has already been closed.
@@ -163,15 +156,16 @@ These routines have no effect if the @var{port} has already been closed.
@deffn procedure open-input-string string
-Takes a string and returns a textual input port that delivers characters from the string. If
-the @var{string} is modified, the effect is unspecified.
+Takes a string and returns a textual input port that delivers
+characters from the string. If the @var{string} is modified, the effect
+is unspecified.
@end deffn
@deffn procedure open-output-string
-Returns a textual output port that will accumulate characters for retrieval by
-@code{get-output-string}.
+Returns a textual output port that will accumulate characters for
+retrieval by @code{get-output-string}.
@end deffn
@@ -180,10 +174,9 @@ Returns a textual output port that will accumulate characters for retrieval by
It is an error if @var{port} was not created with
@code{open-output-string}.
-Returns a string consisting of the
-characters that have been output to the port so far in the order they
-were output.
-If the result string is modified, the effect is unspecified.
+Returns a string consisting of the characters that have been output to
+the port so far in the order they were output. If the result string is
+modified, the effect is unspecified.
@lisp
(parameterize
@@ -201,15 +194,15 @@ If the result string is modified, the effect is unspecified.
@deffn procedure open-input-bytevector bytevector
-Takes a @var{bytevector} and returns a binary input port that delivers bytes from the
-@var{bytevector}.
+Takes a @var{bytevector} and returns a binary input port that delivers
+bytes from the @var{bytevector}.
@end deffn
@deffn procedure open-output-bytevector
-Returns a binary output port that will accumulate bytes for retrieval by
-@code{get-output-bytevector}.
+Returns a binary output port that will accumulate bytes for retrieval
+by @code{get-output-bytevector}.
@end deffn
@@ -218,39 +211,39 @@ Returns a binary output port that will accumulate bytes for retrieval by
It is an error if @var{port} was not created with
@code{open-output-bytevector}.
-Returns a bytevector consisting
-of the bytes that have been output to the @var{port} so far in the
-order they were output.
+Returns a bytevector consisting of the bytes that have been output to
+the @var{port} so far in the order they were output.
+
@end deffn
@node Input
@subsection Input
If @var{port} is omitted from any input procedure, it defaults to the
-value returned by @code{(current-input-port)}.
-It is an error to attempt an input operation on a closed port.
+value returned by @code{(current-input-port)}. It is an error to
+attempt an input operation on a closed port.
@deffn {read library procedure} read
@deffnx {read library procedure} read port
-The @code{read} procedure converts external representations of Scheme objects into the
-objects themselves. That is, it is a parser for the non-terminal
-@svar{datum} (see @ref{External representations formal,, External representations} and
-@ref{Pairs and lists}). It returns the next
-object parsable from the given textual input @var{port}, updating
-@var{port} to point to
-the first character past the end of the external representation of the object.
+The @code{read} procedure converts external representations of Scheme
+objects into the objects themselves. That is, it is a parser for the
+non-terminal @svar{datum} (see @ref{External representations formal,,
+External representations} and @ref{Pairs and lists}). It returns the
+next object parsable from the given textual input @var{port}, updating
+@var{port} to point to the first character past the end of the external
+representation of the object.
-Implementations may support extended syntax to represent record types or
-other types that do not have datum representations.
+Implementations may support extended syntax to represent record types
+or other types that do not have datum representations.
-If an end of file is encountered in the input before any
-characters are found that can begin an object, then an end-of-file
-object is returned. The port remains open, and further attempts
-to read will also return an end-of-file object. If an end of file is
-encountered after the beginning of an object's external representation,
-but the external representation is incomplete and therefore not parsable,
-an error that satisfies @code{read-error?} is signaled.
+If an end of file is encountered in the input before any characters are
+found that can begin an object, then an end-of-file object is returned.
+The port remains open, and further attempts to read will also return an
+end-of-file object. If an end of file is encountered after the
+beginning of an object's external representation, but the external
+representation is incomplete and therefore not parsable, an error that
+satisfies @code{read-error?} is signaled.
@end deffn
@@ -258,28 +251,27 @@ an error that satisfies @code{read-error?} is signaled.
@deffnx procedure read-char port
Returns the next character available from the textual input @var{port},
-updating
-the @var{port} to point to the following character. If no more characters
-are available, an end-of-file object is returned.
+updating the @var{port} to point to the following character. If no more
+characters are available, an end-of-file object is returned.
@end deffn
@deffn procedure peek-char
@deffnx procedure peek-char port
-Returns the next character available from the textual input
-@var{port}, but without updating the
-@var{port} to point to the following character. If no more characters are available, an end-of-file
-object is returned.
+Returns the next character available from the textual input @var{port},
+but without updating the @var{port} to point to the following
+character. If no more characters are available, an end-of-file object
+is returned.
-Note:
-The value returned by a call to @code{peek-char} is the same as the
-value that would have been returned by a call to @code{read-char} with the
-same @var{port}. The only difference is that the very next call to
-@code{read-char} or @code{peek-char} on that @var{port} will return the
-value returned by the preceding call to @code{peek-char}. In particular, a call
-to @code{peek-char} on an interactive port will hang waiting for input
-whenever a call to @code{read-char} would have hung.
+Note: The value returned by a call to @code{peek-char} is the same as
+the value that would have been returned by a call to @code{read-char}
+with the same @var{port}. The only difference is that the very next
+call to @code{read-char} or @code{peek-char} on that @var{port} will
+return the value returned by the preceding call to @code{peek-char}.
+In particular, a call to @code{peek-char} on an interactive port
+will hang waiting for input whenever a call to @code{read-char}
+would have hung.
@end deffn
@@ -287,26 +279,27 @@ whenever a call to @code{read-char} would have hung.
@deffnx procedure read-line port
Returns the next line of text available from the textual input
-@var{port}, updating the @var{port} to point to the following character.
-If an end of line is read, a string containing all of the text up to
-(but not including) the end of line is returned, and the port is updated
-to point just past the end of line. If an end of file is encountered
-before any end of line is read, but some characters have been
-read, a string containing those characters is returned. If an end of
-file is encountered before any characters are read, an end-of-file
-object is returned. For the purpose of this procedure, an end of line
-consists of either a linefeed character, a carriage return character, or a
-sequence of a carriage return character followed by a linefeed character.
-Implementations may also recognize other end of line characters or sequences.
+@var{port}, updating the @var{port} to point to the following
+character. If an end of line is read, a string containing all of the
+text up to (but not including) the end of line is returned, and the
+port is updated to point just past the end of line. If an end of file
+is encountered before any end of line is read, but some characters have
+been read, a string containing those characters is returned. If an end
+of file is encountered before any characters are read, an end-of-file
+object is returned. For the purpose of this procedure, an end of line
+consists of either a linefeed character, a carriage return character,
+or a sequence of a carriage return character followed by a linefeed
+character. Implementations may also recognize other end of line
+characters or sequences.
@end deffn
@deffn procedure eof-object? obj
-Returns @code{#t} if @var{obj} is an end-of-file object, otherwise returns
-@code{#f}. The precise set of end-of-file objects will vary among
-implementations, but in any case no end-of-file object will ever be an object
-that can be read in using @code{read}.
+Returns @code{#t} if @var{obj} is an end-of-file object, otherwise
+returns @code{#f}. The precise set of end-of-file objects will vary
+among implementations, but in any case no end-of-file object will
+ever be an object that can be read in using @code{read}.
@end deffn
@@ -319,53 +312,51 @@ Returns an end-of-file object, not necessarily unique.
@deffn procedure char-ready?
@deffnx procedure char-ready? port
-Returns @code{#t} if a character is ready on the textual input @var{port} and
-returns @code{#f} otherwise. If @code{char-ready} returns @code{#t} then
-the next @code{read-char} operation on the given @var{port} is guaranteed
-not to hang. If the @var{port} is at end of file then @code{char-ready?}
-returns @code{#t}.
+Returns @code{#t} if a character is ready on the textual input
+@var{port} and returns @code{#f} otherwise. If @code{char-ready}
+returns @code{#t} then the next @code{read-char} operation on the
+given @var{port} is guaranteed not to hang. If the @var{port} is at
+end of file then @code{char-ready?} returns @code{#t}.
@subheading Rationale:
-The @code{char-ready?} procedure exists to make it possible for a program to
-accept characters from interactive ports without getting stuck waiting for
-input. Any input editors associated with such ports must ensure that
-characters whose existence has been asserted by @code{char-ready?} cannot
-be removed from the input. If @code{char-ready?} were to return @code{#f} at end of
-file, a port at end of file would be indistinguishable from an interactive
-port that has no ready characters.
+The @code{char-ready?} procedure exists to make it possible for
+a program to accept characters from interactive ports without
+getting stuck waiting for input. Any input editors associated with
+such ports must ensure that characters whose existence has been
+asserted by @code{char-ready?} cannot be removed from the input.
+If @code{char-ready?} were to return @code{#f} at end of file, a port
+at end of file would be indistinguishable from an interactive port
+that has no ready characters.
@end deffn
@deffn procedure read-string k
@deffnx procedure read-string k port
-Reads the next @var{k} characters, or as many as are available before the end of file,
-from the textual
-input @var{port} into a newly allocated string in left-to-right order
-and returns the string.
-If no characters are available before the end of file,
-an end-of-file object is returned.
+Reads the next @var{k} characters, or as many as are available
+before the end of file, from the textual input @var{port} into a
+newly allocated string in left-to-right order and returns the string.
+If no characters are available before the end of file, an end-of-file
+object is returned.
@end deffn
@deffn procedure read-u8
@deffnx procedure read-u8 port
-Returns the next byte available from the binary input
-@var{port}, updating the
-@var{port} to point to the following byte. If no more bytes are available, an end-of-file object is
-returned.
+Returns the next byte available from the binary input @var{port},
+updating the @var{port} to point to the following byte. If no more
+bytes are available, an end-of-file object is returned.
@end deffn
@deffn procedure peek-u8
@deffnx procedure peek-u8 port
-Returns the next byte available from the binary input
-@var{port}, but without updating the
-@var{port} to point to the following byte. If no more bytes are available, an end-of-file object is
-returned.
+Returns the next byte available from the binary input @var{port}, but
+without updating the @var{port} to point to the following byte. If no
+more bytes are available, an end-of-file object is returned.
@end deffn
@@ -373,22 +364,21 @@ returned.
@deffnx procedure u8-ready? port
Returns @code{#t} if a byte is ready on the binary input @var{port}
-and returns @code{#f} otherwise. If @code{u8-ready?} returns
-@code{#t} then the next @code{read-u8} operation on the given
-@var{port} is guaranteed not to hang. If the @var{port} is at end of
-file then @code{u8-ready?} returns @code{#t}.
+and returns @code{#f} otherwise. If @code{u8-ready?} returns @code{#t}
+then the next @code{read-u8} operation on the given @var{port} is
+guaranteed not to hang. If the @var{port} is at end of file then
+@code{u8-ready?} returns @code{#t}.
@end deffn
@deffn procedure read-bytevector k
@deffnx procedure read-bytevector k port
-Reads the next @var{k} bytes, or as many as are available before the end of file,
-from the binary
-input @var{port} into a newly allocated bytevector in left-to-right order
-and returns the bytevector.
-If no bytes are available before the end of file,
-an end-of-file object is returned.
+Reads the next @var{k} bytes, or as many as are available before the
+end of file, from the binary input @var{port} into a newly allocated
+bytevector in left-to-right order and returns the bytevector. If no
+bytes are available before the end of file, an end-of-file object
+is returned.
@end deffn
@@ -397,15 +387,13 @@ an end-of-file object is returned.
@deffnx procedure read-bytevector! bytevector port start
@deffnx procedure read-bytevector! bytevector port start end
-Reads the next @var{end} @minus{} @var{start} bytes, or as many as are available
-before the end of file,
-from the binary
-input @var{port} into @var{bytevector} in left-to-right order
-beginning at the @var{start} position. If @var{end} is not supplied,
-reads until the end of @var{bytevector} has been reached. If
-@var{start} is not supplied, reads beginning at position 0.
-Returns the number of bytes read.
-If no bytes are available, an end-of-file object is returned.
+Reads the next @var{end} @minus{} @var{start} bytes, or as many as are
+available before the end of file, from the binary input @var{port} into
+@var{bytevector} in left-to-right order beginning at the @var{start}
+position. If @var{end} is not supplied, reads until the end of
+@var{bytevector} has been reached. If @var{start} is not supplied,
+reads beginning at position 0. Returns the number of bytes read. If no
+bytes are available, an end-of-file object is returned.
@end deffn
@@ -413,28 +401,27 @@ If no bytes are available, an end-of-file object is returned.
@subsection Output
If @var{port} is omitted from any output procedure, it defaults to the
-value returned by @code{(current-output-port)}.
-It is an error to attempt an output operation on a closed port.
+value returned by @code{(current-output-port)}. It is an error to
+attempt an output operation on a closed port.
@deffn {write library procedure} write obj
@deffnx {write library procedure} write obj port
Writes a representation of @var{obj} to the given textual output
-@var{port}. Strings
-that appear in the written representation are enclosed in quotation marks, and
-within those strings backslash and quotation mark characters are
-escaped by backslashes. Symbols that contain non-ASCII characters
-are escaped with vertical lines.
+@var{port}. Strings that appear in the written representation are
+enclosed in quotation marks, and within those strings backslash and
+quotation mark characters are escaped by backslashes. Symbols that
+contain non-ASCII characters are escaped with vertical lines.
Character objects are written using the @code{#\} notation.
-If @var{obj} contains cycles which would cause an infinite loop using
-the normal written representation, then at least the objects that form
-part of the cycle must be represented using datum labels as described
-in @ref{Datum labels}. Datum labels must not be used if there
-are no cycles.
+If @var{obj} contains cycles which would cause an infinite loop
+using the normal written representation, then at least the objects
+that form part of the cycle must be represented using datum labels
+as described in @ref{Datum labels}. Datum labels must not be used
+if there are no cycles.
-Implementations may support extended syntax to represent record types or
-other types that do not have datum representations.
+Implementations may support extended syntax to represent record types
+or other types that do not have datum representations.
The @code{write} procedure returns an unspecified value.
@@ -443,55 +430,55 @@ The @code{write} procedure returns an unspecified value.
@deffn {write library procedure} write-shared obj
@deffnx {write library procedure} write-shared obj port
-The @code{write-shared} procedure is the same as @code{write}, except that
-shared structure must be represented using datum labels for all pairs
-and vectors that appear more than once in the output.
+The @code{write-shared} procedure is the same as @code{write}, except
+that shared structure must be represented using datum labels for all
+pairs and vectors that appear more than once in the output.
@end deffn
@deffn {write library procedure} write-simple obj
@deffnx {write library procedure} write-simple obj port
-The @code{write-simple} procedure is the same as @code{write}, except that shared structure is
-never represented using datum labels. This can cause @code{write-simple} not to
-terminate if @var{obj} contains circular structure.
+The @code{write-simple} procedure is the same as @code{write}, except
+that shared structure is never represented using datum labels. This can
+cause @code{write-simple} not to terminate if @var{obj} contains
+circular structure.
@end deffn
@deffn {write library procedure} display obj
@deffnx {write library procedure} display obj port
-Writes a representation of @var{obj} to the given textual output @var{port}.
-Strings that appear in the written representation are output as if by
-@code{write-string} instead of by @code{write}.
-Symbols are not escaped. Character
-objects appear in the representation as if written by @code{write-char}
-instead of by @code{write}.
+Writes a representation of @var{obj} to the given textual output
+@var{port}. Strings that appear in the written representation are
+output as if by @code{write-string} instead of by @code{write}.
+Symbols are not escaped. Character objects appear in the
+representation as if written by @code{write-char} instead of by
+@code{write}.
The @code{display} representation of other objects is unspecified.
-However, @code{display} must not loop forever on
-self-referencing pairs, vectors, or records. Thus if the
-normal @code{write} representation is used, datum labels are needed
-to represent cycles as in @code{write}.
+However, @code{display} must not loop forever on self-referencing
+pairs, vectors, or records. Thus if the normal @code{write}
+representation is used, datum labels are needed to represent cycles
+as in @code{write}.
-Implementations may support extended syntax to represent record types or
-other types that do not have datum representations.
+Implementations may support extended syntax to represent record types
+or other types that do not have datum representations.
The @code{display} procedure returns an unspecified value.
@subheading Rationale:
-The @code{write} procedure is intended
-for producing machine-readable output and @code{display} for producing
-human-readable output.
+The @code{write} procedure is intended for producing machine-readable
+output and @code{display} for producing human-readable output.
@end deffn
@deffn procedure newline
@deffnx procedure newline port
-Writes an end of line to textual output
-@var{port}. Exactly how this is done differs from one operating system to another. Returns an
+Writes an end of line to textual output @var{port}. Exactly how this is
+done differs from one operating system to another. Returns an
unspecified value.
@end deffn
@@ -499,9 +486,9 @@ unspecified value.
@deffn procedure write-char char
@deffnx procedure write-char char port
-Writes the character
-@var{char} (not an external representation of the character) to the given textual output
-@var{port} and returns an unspecified value.
+Writes the character @var{char} (not an external representation of the
+character) to the given textual output @var{port} and returns an
+unspecified value.
@end deffn
@@ -510,18 +497,16 @@ Writes the character
@deffnx procedure write-string string port start
@deffnx procedure write-string string port start end
-Writes the characters of @var{string}
-from @var{start} to @var{end}
-in left-to-right order to the
-textual output @var{port}.
+Writes the characters of @var{string} from @var{start} to @var{end} in
+left-to-right order to the textual output @var{port}.
@end deffn
@deffn procedure write-u8 byte
@deffnx procedure write-u8 byte port
-Writes the @var{byte} to
-the given binary output @var{port} and returns an unspecified value.
+Writes the @var{byte} to the given binary output @var{port} and returns
+an unspecified value.
@end deffn
@@ -530,17 +515,15 @@ the given binary output @var{port} and returns an unspecified value.
@deffnx procedure write-bytevector bytevector port start
@deffnx procedure write-bytevector bytevector port start end
-Writes the bytes of @var{bytevector}
-from @var{start} to @var{end}
-in left-to-right order to the
-binary output @var{port}.
+Writes the bytes of @var{bytevector} from @var{start} to @var{end} in
+left-to-right order to the binary output @var{port}.
@end deffn
@deffn procedure flush-output-port
@deffnx procedure flush-output-port port
-Flushes any buffered output from the buffer of @var{port} to the underlying file or
-device and returns an unspecified value.
+Flushes any buffered output from the buffer of @var{port} to the
+underlying file or device and returns an unspecified value.
@end deffn