eintr: Lisp Atoms

 
 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‘car’ ‘cdr’ & ‘cons’
 Fundamental Functions car cdr & cons.)
 
    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.