Docstoc

LISP

Document Sample
LISP Powered By Docstoc
					                        LISP
• LISP = LISt Processing
• Intended for processing symbolic information
• Implementations from noncommercial sites:
    • GNU Common Lisp (GCL) - U of Texas mods to
    Kyoto Common Lisp
    • CLISP -- developed in Germany.
• Available implementations from www.franz.com:
    •Allegro Common Lisp for Windows, Web edition.
    •Allegro Common Lisp for Linux



                      CSE 341, S. Tanimoto           1
                            Lisp 1 -
         LISP: Our Objectives
• Motivation and History
• Interactive programming
• Functional programming
• List manipulation with recursive functions
• Polymorphism
• Language extensibility via macro definitions
• Language evolution to support multiple paradigms
• Lisp look and feel
• Lisp on the Web

                     CSE 341, S. Tanimoto       2
                           Lisp 1 -
   History of Lisp (continued)
• John McCarthy, developed the ideas
during the Dartmouth Summer Research
Project on Artificial Intelligence, 1956.
• First implementation on the IBM 704
• John McCarthy published “Recursive
functions of symbolic expressions and
their computation by machine” in
Communications of the Association for
Computing Machinery in 1960.
                 CSE 341, S. Tanimoto       3
                       Lisp 1 -
    History of Lisp (continued)
• 1970s: advanced dialects -- MacLisp, InterLisp;
• Lisp machines (Symbolics, Inc.; Lisp Machines,
Inc.; Xerox; Texas Instruments)
• Late 1970s: Scheme, Portable Standard Lisp,
XLISP.
• 1984. Common Lisp.
• Use of Lisp as internal scripting languages:
Gnu Emacs, AutoCAD.
• 1987 CLOS = Common Lisp Object System.
• 1994 ANSI Standard Lisp.

                    CSE 341, S. Tanimoto        4
                          Lisp 1 -
        Interacting with Lisp
• Interaction takes place in a Lisp Listener
Window.
• Lisp runs an endless loop for interacting
with the user:

       READ
       EVAL
       PRINT

                  CSE 341, S. Tanimoto         5
                        Lisp 1 -
     Interacting with Lisp
          (continued)
> (+ 3 5)
8
> (* 2.5 (+ 2 2))
10.0
> (setq x 5)
5
> (sqrt x)
2.236068
> (* x x)
25


              CSE 341, S. Tanimoto   6
                    Lisp 1 -
       Defining a function
> (* 5 5 5)
125
> (defun cube (n) (* n n n))
CUBE
> (cube 2)
8
> (cube 15.001)
3375.6753




               CSE 341, S. Tanimoto   7
                     Lisp 1 -
         Symbolic Values
Symbols are like identifiers, but they are
commonly used as values as well as variables.
> (setq x ’pizza)
PIZZA
> x
PIZZA
> (setq pizza ’pepperoni)
PEPPERONI
> pizza
PEPPERONI
> (eval x)
PEPPERONI

                 CSE 341, S. Tanimoto           8
                       Lisp 1 -
More on Evaluation of Symbols
>   (setq x ’y)
Y
>   (setq y ’z)
Z
>   (setq z ’x)
X
>   x
Y
>   (eval x)
Z
>   (eval (eval x))
X
                  CSE 341, S. Tanimoto   9
                        Lisp 1 -
          Values of Symbols
A symbol without a value in the current context is
said to be “unbound”.

The value of a symbol can be any Lisp object,
including a number, another symbol, a functional
object, a list, and array, etc.

A symbol can have several local (“lexical”) values
and one global value. However, symbols belong to
“packages”, and two different packages can have
symbols with the same name.


                    CSE 341, S. Tanimoto             10
                          Lisp 1 -

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:0
posted:7/25/2013
language:English
pages:10