var—a variable name.
stream—a form; evaluated to produce a stream.
declaration—a declare expression; not evaluated.
forms—an implicit progn.
results—the values returned by the forms.
with-open-stream
performs a series of operations on
stream, returns a value, and then closes the stream.
Var is bound to the value of stream,
and then forms are executed
as an implicit progn.
stream
is automatically closed on exit from with-open-stream
,
no matter whether the exit is normal or abnormal.
The stream has dynamic extent;
its extent ends when the form is exited.
The consequences are undefined if an attempt is made to assign the the variable var with the forms.
(with-open-stream (s (make-string-input-stream "1 2 3 4"))
(+ (read s) (read s) (read s))) → 6
The stream is closed (upon exit).