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 (see Printed Representation and Read Syntax). 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: