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