GNU Info

Info Node: (emacs-lisp-intro.info)Lisp Atoms

(emacs-lisp-intro.info)Lisp Atoms


Next: Whitespace in Lists Prev: Numbers Lists Up: Lisp Lists
Enter node , (file) or (file)node

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 atom,
a list can be split into parts.  (Note: `car' `cdr' & `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.)

   In addition, text between double quotation marks--even sentences or
paragraphs--is 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.


automatically generated by info2www version 1.2.2.9