Introduction to Reading and Printing
====================================
"Reading" a Lisp object means parsing a Lisp expression in textual
form and producing a corresponding Lisp object. This is how Lisp
programs get into Lisp from files of Lisp code. We call the text the
"read syntax" of the object. For example, the text `(a . 5)' is the
read syntax for a cons cell whose CAR is `a' and whose CDR is the
number 5.
"Printing" a Lisp object means producing text that represents that
object--converting the object to its "printed representation" (Note:Printed Representation). Printing the cons cell described above
produces the text `(a . 5)'.
Reading and printing are more or less inverse operations: printing
the object that results from reading a given piece of text often
produces the same text, and reading the text that results from printing
an object usually produces a similar-looking object. For example,
printing the symbol `foo' produces the text `foo', and reading that text
returns the symbol `foo'. Printing a list whose elements are `a' and
`b' produces the text `(a b)', and reading that text produces a list
(but not the same list) with elements `a' and `b'.
However, these two operations are not precisely inverse to each
other. There are three kinds of exceptions:
* Printing can produce text that cannot be read. For example,
buffers, windows, frames, subprocesses and markers print as text
that starts with `#'; if you try to read this text, you get an
error. There is no way to read those data types.
* One object can have multiple textual representations. For example,
`1' and `01' represent the same integer, and `(a b)' and `(a .
(b))' represent the same list. Reading will accept any of the
alternatives, but printing must choose one of them.
* Comments can appear at certain points in the middle of an object's
read sequence without affecting the result of reading it.