230 likes | 427 Views
Artificial Intelligence . LISP. Lisp resources . We will use an implementation of LISP called Allegro Common LISP. Different LISP interpreters include - Eg interpreter: Allegro LISP , Harlequin LISP, Corman Lisp. Text books: ANSI Common LISP, P.Graham, Prentice Hall, 1995 (recommended)
E N D
Artificial Intelligence LISP TES3111 October 2001
Lisp resources • We will use an implementation of LISP called Allegro Common LISP. • Different LISP interpreters include - Eg interpreter: Allegro LISP, Harlequin LISP, Corman Lisp. • Text books: • ANSI Common LISP, P.Graham, Prentice Hall, 1995 (recommended) • Common LISP:the language, G.L. Steele, Digital Press, 1990 (2nd Edition) TES3111 October 2001
Lisp resources-cont • Common LISP: A gentle introduction to Symbolic Computing, David Touretzky, Addison Wesley, 1990. • Paradigms of Artificial Intelligence Programming: Case Studies in Common LISP, Peter Norvig, Academic Press/Morgan Kaufmann, 1992. TES3111 October 2001
Useful websites for LISP • Allegro Lisp download • http://www.franz.com/downloads/ • Association of LISP users • http://www.alu.org • Common LISP Open Code Collection • http://clocc.sourceforge.net • AI special interest group of the ACM - • http://www.sigart.acm.org TES3111 October 2001
1. Lisp is interactive • There is an interpreter that evaluates inputs. An input is processes in 3 steps: 1. Reads input and construct expression from the input. 2. Evaluates the expression for meaning. 3. Prints the results of the evaluation, including signaling of erros if necessary. • These 3 steps can be customized by the programmer. TES3111 October 2001
2. Lisp is a dynamic language • Programs are developed incrementally, by making small changes to the source code. • Interpreter evaluates the changed definitions and then immediately run the results. • New definitions and data structures can be added at any time. • This features are ideal for prototyping. TES3111 October 2001
3. Lisp has symbols • Symbols are the basic type of data in use. • Symbols are used to build bigger, more complex expressions. • Example of symbols: • HELLO • 23-worldofsports TES3111 October 2001
4. LISP has lists • Lists are delimited using parenthesis (…). Anything can be placed in a list, including other lists (nested lists). For example: (1 orange 2 3) (once (upon a) time) • Empty list is represented as () • Caution: elements within a list are separated with a white space, and NOT a comma , TES3111 October 2001
5. Lisp classifies data • It does not classify variables. • A variable is just a symbol. It can hold any type of value. • A variable do not have to be declared before it is used. • Lisp defines different types of data (rather than defining different types of variables) TES3111 October 2001
5. Lisp classifies data - contd Lisp Expression number symbol sequence keyword float list vector ratio integer string TES3111 October 2001
5. Lisp classifies data - contd • Integer - a counting number like 1, 2 ,3 …100, -23 • float - real number. Example 1.59, -100.3 • ratio - a fraction, example 99/23, 4/5 • symbol - a sequence of alphanumeric characters, eg: BOO, ID4… • keyword - a symbol prefixed with a colon. Eg- :BOO, :ID4 • list - a collection of zero or m ore expressions inside (..) • vector - 1 dimensional collection of expressions in sequential memory • string - a vector of 0 or more characters inside “ ” TES3111 October 2001
6. Lisp uses prefix notation • Operators appear in front of their operands. • The infix (10 + 3) is written as (+ 10 3) TES3111 October 2001
7. Lisp is functional • Lisp functions take data, operates on it, and return the results. The returned results are called function values. • Functions can return any number of values. • To call a function, place it as the first element of an input list, followed by its operands. Example: (+ 100 99 88) (setf x (+ 2 3)) • All operations are done through functions TES3111 October 2001
8. Programs and data • Lisp makes no distinction between programs and data. • A program can be treated as a set of instruction or as a list of symbols. • This makes it possible to write programs that generate another program, or programs that analyze other programs. TES3111 October 2001
9. Lisp evaluation is easy to understand • Rule 1 : If an expression is a constant, the interpreter will return the value of the constant. No more rules apply. Examples: ‘socrates, 4.5 • Rule 2: If Rule 1 is not applicable, and the expression is a symbol, then Lisp treats the symbol as a variable and no more rules are considered. If the variable has a value, Lisp will return that value. Otherwise it will report an error. TES3111 October 2001
9. Lisp evaluation is easy to understand • Rule 3: If Rule 1 and Rule 2 do not apply and the expression is a LIST, then Lisp treats it as a function call and no more rules are considered. • You should at this point remember that the first element in the list is assumed to be a defined a function. The remaining elements are data. Each expression in the data is evaluated left to right. • Rule 4: If Rules 1 to 3 do not apply, then there is an error! TES3111 October 2001
10. Lisp is easy to learn??? • How to study and program in Lisp? • Read the first few chapters of a good introductory Lisp book. • Read up the definition of each Lisp function that you encounter. • Start developing a good programming style from the very start! TES3111 October 2001
Data Structures S-Expression - Symbolic expression. It can be an Atom, a List or a collection of S-Expression enclosed by (…) Atom - String of characters beginning with a letter, digit. Eg: Artificial, intelligence, 31416..etc. TES3111 October 2001
Data Structures List - a collection of S-Expression enclosed by ( …. ). Eg: (One of these days) (one ((two) three) four) TES3111 October 2001
Basic Operations • A LISP program contains functions applied to its arguments. • Functions return LISP objects. • 2 types of functions - PREDICATE and COMMANDS TES3111 October 2001
Predicate A function that tests for some condition involving its arguments and returns • Nil if the condition is FALSE (Nil stands for FALSE) • True for any other case. In LISP TRUE is represented using a special LISP variable T. TES3111 October 2001
Command • A command performs operations on its arguments and returns an S-expression. • Format of a command is: (<Command> Arg1 Arg2 … Argn) Note: All commands and predicates must be enclosed in (…). To differentiate from lists… a list is preceded with a single quote ‘ Eg : (CAR a b c) versus ‘(CAR a b c) TES3111 October 2001
Function - CAR CAR - returns the first element of a list. Examples: • (CAR ‘(a b c d e)) • (CAR ‘((an orange) a day)) • (CAR '(1 (2 3 (4 5)) 6)) • (CAR ‘()) Note that in the last example, the argument to CAR is a null-list. TES3111 October 2001