lisp_47542238

Download Report

Transcript lisp_47542238

Lisp
"List Processing"
Lisp history

John McCarthy developed the basics behind Lisp during
the 1956 Dartmouth Summer Research Project on
Artificial Intelligence

He intended it as an algebraic LISt Processing (hence
the name) language for artificial intelligence work

He showed how, given a handful of simple operators and
anotation for functions, you can build a whole
programming language.
Design Goals

Formalism for developing a theory of computation

Programming language for numerical and logical
problems

Symbolic manipulation of expressions and sentences
Characteristics

LISP was one of the earliest high-level
programming languages and introduced many ideas
such as garbage collection, recursive functions,
symbolic expressions, and dynamic type-checking

Interest in symbolic computation influenced design

Use of simple machine model

Attention to theoretical considerations Recursive
function theory, Lambda calculus
Distinctive Characteristics



Not C, C++, Java: a chance to think
differently
LISt Processing: the ancestor of all
functional languages
Lisp is good at handling lists of things, and
the abstraction level is higher than C/C++
normally allows you to get to.
Relative Speeds of 5 language
Description of Lisp

LISP is usually used as an interpreted
language.

The interpreter runs what is known as a
read- evaluates-print loop.
Description of Lisp




The two most important kinds of objects in LISP
for you to know about are atoms and lists.
Atoms are represented as sequences of
characters of reasonable length. Such as :34 or join.
Lists are recursively constructed from atoms
Such as: (a john 34 c3po).
The interpreter treats any list as containing the
name of a function followed by the arguments to
the function. Such as: (+ 2 13 45).
Defining Lisp Function
Use defun to define your own functions in LISP.
(defun <name> <parameter-list> <body>)


Example:
>(defun square (x) (* x x))
SQUARE
>(square 2)
4
Example Code

reverse : Format: (reverse <list>)
Reverse returns a list that contains all the
elements of <list> in reversed order.

Example:
> (reverse '(picard riker worf crusher))
(CRUSHER WORF RIKER PICARD)
> (reverse (reverse '(picard riker worf crusher)))
(PICARD RIKER WORF CRUSHER)

Resources




http://faqs.org/faqs/lisp-faq/part2/section-13.html
http://www.cc.gatech.edu/data_files/classes/cs6390/slides/lisp.pdf
http://web.syr.edu/~aalarifi/Common%20Lisp.pdf
http://norvig.com/python-lisp.html