1.1.1 Lisp Atoms

In Lisp, what we have been calling words are called atoms. This
term comes from the historical meaning of the word atom, which means
`indivisible'. As far as Lisp is concerned, the words we have been
using in the lists cannot be divided into any smaller parts and still
mean the same thing as part of a program; likewise with numbers and
single character symbols like ‘+’. On the other hand, unlike an
ancient atom, a list can be split into parts. (See carcdr & cons Fundamental Functions.)

In a list, atoms are separated from each other by whitespace. They can be
right next to a parenthesis.

Technically speaking, a list in Lisp consists of parentheses surrounding
atoms separated by whitespace or surrounding other lists or surrounding
both atoms and other lists. A list can have just one atom in it or
have nothing in it at all. A list with nothing in it looks like this:
(), and is called the empty list. Unlike anything else, an
empty list is considered both an atom and a list at the same time.

The printed representation of both atoms and lists are called
symbolic expressions or, more concisely, s-expressions.
The word expression by itself can refer to either the printed
representation, or to the atom or list as it is held internally in the
computer. Often, people use the term expression
indiscriminately. (Also, in many texts, the word form is used
as a synonym for expression.)

Incidentally, the atoms that make up our universe were named such when
they were thought to be indivisible; but it has been found that physical
atoms are not indivisible. Parts can split off an atom or it can
fission into two parts of roughly equal size. Physical atoms were named
prematurely, before their truer nature was found. In Lisp, certain
kinds of atom, such as an array, can be separated into parts; but the
mechanism for doing this is different from the mechanism for splitting a
list. As far as list operations are concerned, the atoms of a list are
unsplittable.

As in English, the meanings of the component letters of a Lisp atom
are different from the meaning the letters make as a word. For
example, the word for the South American sloth, the ‘ai’, is
completely different from the two words, ‘a’, and ‘i’.

There are many kinds of atom in nature but only a few in Lisp: for
example, numbers, such as 37, 511, or 1729, and symbols, such
as ‘+’, ‘foo’, or ‘forward-line’. The words we have
listed in the examples above are all symbols. In everyday Lisp
conversation, the word “atom” is not often used, because programmers
usually try to be more specific about what kind of atom they are dealing
with. Lisp programming is mostly about symbols (and sometimes numbers)
within lists. (Incidentally, the preceding three word parenthetical
remark is a proper list in Lisp, since it consists of atoms, which in
this case are symbols, separated by whitespace and enclosed by
parentheses, without any non-Lisp punctuation.)

Text between double quotation marks—even sentences or
paragraphs—is also an atom. Here is an example:

'(this list includes "text between quotation marks.")

In Lisp, all of the quoted text including the punctuation mark and the
blank spaces is a single atom. This kind of atom is called a
string (for `string of characters') and is the sort of thing that
is used for messages that a computer can print for a human to read.
Strings are a different kind of atom than numbers or symbols and are
used differently.