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 (SeeVariables), we will discuss what the
 Lisp interpreter does when you make an error.