eintr: Run a Program
1.2 Run a Program
=================
A list in Lisp—any list—is a program ready to run. If you run it (for
which the Lisp jargon is “evaluate”), the computer will do one of three
things: do nothing except return to you the list itself; send you an
error message; or, treat the first symbol in the list as a command to do
something. (Usually, of course, it is the last of these three things
that you really want!)
The single apostrophe, ‘'’, that I put in front of some of the
example lists in preceding sections is called a “quote”; when it
precedes a list, it tells Lisp to do nothing with the list, other than
take it as it is written. But if there is no quote preceding a list,
the first item of the list is special: it is a command for the computer
to obey. (In Lisp, these commands are called _functions_.) The list
‘(+ 2 2)’ shown above did not have a quote in front of it, so Lisp
understands that the ‘+’ is an instruction to do something with the rest
of the list: add the numbers that follow.
If you are reading this inside of GNU Emacs in Info, here is how you
can evaluate such a list: place your cursor immediately after the right
hand parenthesis of the following list and then type ‘C-x C-e’:
(+ 2 2)
You will see the number ‘4’ appear in the echo area. (What you have
just done is evaluate the list. The echo area is the line at the bottom
of the screen that displays or echoes text.) Now try the same thing
with a quoted list: place the cursor right after the following list and
type ‘C-x C-e’:
'(this is a quoted list)
You will see ‘(this is a quoted list)’ appear in the echo area.
In both cases, what you are doing is giving a command to the program
inside of GNU Emacs called the “Lisp interpreter”—giving the interpreter
a command to evaluate the expression. The name of the Lisp interpreter
comes from the word for the task done by a human who comes up with the
meaning of an expression—who interprets it.
You can also evaluate an atom that is not part of a list—one that is
not surrounded by parentheses; again, the Lisp interpreter translates
from the humanly readable expression to the language of the computer.
But before discussing this (Variables), we will discuss what the
Lisp interpreter does when you make an error.