Formatted I/OInput / OutputPorts

Ports

Ports represent character-oriented input/output devices.
 <port> (<seq>) C
 open (t|(t< <port>) x|<str> => <port>) G
creates port given port specific spec x.
 close (x|<port>) G
closes and cleanups port.
(x|<port>) M
noop default.
 WITH-PORT (WITH-PORT (,name ,port) ,@body) S
binds ,name to the value of ,port during the evaluation of (seq ,@body) and finally ensures that the port is closed at the end of evaluation.
 eof-object? (x|<chr> => <log>) G
 <in-port> (<port>) C
input port.
 in <in-port> I
standard input.
 get (x|<in-port> => <chr>) G
returns next available character or eof-object.
 gets (x|<in-port> => <str>) G
returns a line until either reading a newline or eof-object.
 peek (x|<in-port> => <chr>) G
returns next available character if any without advancing pointer or eof-object.
 ready? (x|<in-port> => <log>) G
returns true iff a character is available.
 <out-port> (<port>) C
output port.
 out <out-port> I
standard output.
 force-out (x|<out-port>) G
ensures that buffers are forced and pending output is completed.
 put (x|<out-port> e|<chr>) G
outputs a single character.
 puts (x|<out-port> e|<str>) G
outputs string.
 newline (x|<out-port>) G
outputs a newline sequence.
 say (x|<out-port> args|...) G
== (do (op puts x (to-str _)) args)

File Ports

File ports are ports which map to files.
 <file-port> (<port>) C
 close (x|<file-port>) M
closes port and finishes pending output.
 <file-in-port> (<file-port> <in-port>) C
 open (t|(t= <file-in-port>) name|<str> => <file-in-port>) M
creates file in port mapped to a file with filename name.
 <file-out-port> (<file-port> <out-port>) C
 open (t|(t= <file-out-port>) name|<str> => <file-out-port>) M
creates file out port mapped to a file with filename name.

String Ports

String ports provide port interface mapped onto strings.
 <str-port> (<any>) C
 port-contents (x|<str-port> => <str>) P
returns underlying string.
 <str-in-port> (<str-port> <out-port>) C
 open (t|(t= <str-in-port>) dat|<str> => <str-in-port>) M
creates string in port mapped to string dat.
 port-index (x|<str-port> => <int>) P
returns index from which next character will be read.
 <str-out-port> (<str-port> <in-port>) C
 open (t|(t= <str-out-port>) dat|<str> => <str-out-port>) M
creates string out port mapped to string dat.
 PORT-TO-STR (PORT-TO-STR ,name ,@body) S
== (let ((,name (open <str-out-port> ""))) ,@body (port-contents ,name))


Formatted I/OInput / OutputPorts