11 Ports
(require (planet cce/scheme:7:3/port)) |
This module provides tools for port I/O.
Example: |
> (eprintf "Danger, ~a!" "Will Robinson") |
Danger, Will Robinson! |
(read-all [reader port]) → list? |
reader : (-> any/c) = read |
port : input-port? = (current-input-port) |
This function produces a list of all the values produced by calling
(reader) while current-input-port is set to port, up
until it produces eof.
Examples: | ||
> (read-all read (open-input-string "1 2 3")) | ||
'(1 2 3) | ||
| ||
'(a b c) |
(read-all-syntax [reader port]) → (syntax/c list?) |
reader : (-> (or/c syntax? eof-object?)) = read |
port : input-port? = (current-input-port) |
This function produces a syntax object containing a list of all the syntax
objects produced by calling (reader) while current-input-port
is set to port, up until it produces eof. The source location
of the result spans the entire portion of the port that was read.
Examples: | ||
| ||
> (port-count-lines! port1) | ||
> (read-all-syntax read-syntax port1) | ||
#<syntax:1:0 (1 2 3)> | ||
| ||
> (port-count-lines! port2) | ||
| ||
#<syntax:1:0 (a b c)> |
(port->srcloc port [source span]) → srcloc? |
port : port? |
source : any/c = (object-name port) |
span : exact-nonnegative-integer? = 0 |
Produces a srcloc structure representing the current position of a
port, using the provided source and span values to fill in
missing fields. This function relies on port-next-location, so line
counting must be enabled for port to get meaningful results.
Examples: | ||
| ||
> (port-count-lines! port) | ||
> (read port) | ||
1 | ||
> (port->srcloc port) | ||
(srcloc 'string 1 1 2 0) | ||
> (port->srcloc port "1 2 3" 1) | ||
(srcloc "1 2 3" 1 1 2 1) |
(read-available-bytes [port]) → (or/c bytes? eof-object?) |
port : input-port? = (current-input-port) |
This function reads all immediately available bytes from a port and produces a
byte string containing them. If there are no bytes available and the port is
known to have no more input, it produces eof; if there are none
available but the port may have more input, it produces an empty byte string.
This procedure never blocks to wait for input from the port.
Examples: | ||
| ||
> (parameterize ([current-input-port in]) (read-available-bytes)) | ||
#"" | ||
> (write-byte (char->integer #\c) out) | ||
> (read-available-bytes in) | ||
#"c" | ||
> (read-available-bytes in) | ||
#"" | ||
> (close-output-port out) | ||
> (read-available-bytes in) | ||
#<eof> |