1 / 32

Ch 15. An Introduction to LISP

Ch 15. An Introduction to LISP. 15.0 Introduction 15.1 LISP: A Brief Overview 15.1.1 Symbolic Expressions, the Syntactic Basis of LISP 15.1.2 Control of LISP Evaluation: quote and eval 15.1.3 Programming in LISP: Creating New Functions

aleron
Télécharger la présentation

Ch 15. An Introduction to LISP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ch 15. An Introduction to LISP • 15.0 Introduction • 15.1 LISP: A Brief Overview • 15.1.1 Symbolic Expressions, the Syntactic Basis of LISP • 15.1.2 Control of LISP Evaluation: quote and eval • 15.1.3 Programming in LISP: Creating New Functions • 15.1.4 Program Control in LISP: Conditionals and Predicates • 15.1.5 Functions, Lists, and Symbolic Computing • 15.1.6 Lists as Recursive Structures • 15.1.7 Nested Lists, Structure, and car/cdr Recursion • 15.1.8 Binding Variables Using set • 15.1.9 Defining Local Variables Using let • 15.1.10 Data Types in Common LISP Artificial Intelligence

  2. 15.0 Characteristics of LISP • Language for artificial intelligence programming • Originally designed for symbolic computing • Imperative language • Describe how to perform an algorithm • Contrasts with declarative languages such as PROLOG • Functional programming • Syntax and semantics are derived from the mathematical theory of recursive functions. • Combined with a rich set of high-level tools for building symbolic data structures such as predicates, frames, networks, and objects • Popularity in the AI community • Widely used as a language for implementing AI tools and models • High-level functionality and rich development environment make it an ideal language for building and testing prototype systems. Artificial Intelligence

  3. 15.1 LISP: A Brief Overview • Syntactic elements of LISP • Symbolic expressions : S-expressions • Atom : basic syntactic units • List • Both programs and data are represented as s-expressions • Atom • Letters (upper, lower cases) • Numbers • Characters : * + - / @ $ % ^ & _ < > ~ . • Example • 3.1416 • Hyphenated-name • *some-global* • nil • x Artificial Intelligence

  4. List and S-expression • List • A sequence of either atoms or other lists separated by blanks and enclosed in parentheses. • Example • (1 2 3 4) • (a (b c) (d (e f))) • Empty list “( )” : nil • nil is the only s-expression that is considered to be both an atom and a list. • S-expression • An atom is an s-expression. • If s1, s2,…, sn are s-expressions, then so is the list (s1 s2 … sn). Artificial Intelligence

  5. Read-Eval-Print • Interactive Environment • User enters s-expressions • LISP interpreter prints a prompt • If you enter • Atom: LISP evaluates itself (error if nothing is bound to the atom) • List: LISP evaluates as an evaluation of function, i.e. that the first item in the list needs to be a function definition (error if no function definition is bound for the first atom), and remaining elements to be its arguments. • > (* 7 9) 63 Artificial Intelligence

  6. Control of LISP Evaluation:quote & eval • quote : ‘ • prevent the evaluation of arguments • (quote a) ==> a • (quote (+ 1 3)) ==> (+ 1 3) • ‘a ==> a • ‘(+ 4 6) ==> (+ 4 6) • eval • allows programmers to evaluate s-expressions at will • (eval (quote (+ 2 3))) ==> 5 • (list ‘* 2 5) ==> (* 2 5) • (eval (list ‘* 2 5)) ==> 10 Artificial Intelligence

  7. Programming in LISP:Creating New Functions • Syntax of Function Definition • (defun <function-name> (<formal parameters>) <function body>) • defun : define function • Example • (defun square (x) (* x x)) • (defun hypotenuse (x y) ;the length of the hypotenuse is (sqrt (+ (square x) ;the square root of the sum of (square y)))) ;the square of the other sides. Artificial Intelligence

  8. Program Control in LISP:Conditionals & Predicates(1/2) • Conditions • (cond (<condition 1> <action1>) (<condition 2> <action 2>) ... (<condition n> <action n)) • Evaluate the conditions in order until one of the condition returns a non-nil value • Evaluate the associated action and returns the result of the action as the value of the cond expression • Predicates • Example • (oddp 3) ; whether its argument is odd or not • (minusp 6) • (numberp 17) Artificial Intelligence

  9. Conditionals & Predicates(2/2) • Alternative Conditions • (if test action-then action-else) • (defun absolute-value (x) (if (< x 0) (- x) x)) • it returns the result of action-then if test return a non-nil value • it return the result of action-else if test returns nil • (and action1 ... action-n) ; conjunction • Evaluate arguments, stopping when any one of arguments evaluates to nil • (or action1 ... action-n) ; disjunction • Evaluate its arguments only until a non-nil value is encountered Artificial Intelligence

  10. List as recursive structures • Cons cell: data structure to hold a list in LISP • car - holds the first element. • cdr - holds the rest in the list. • Accessing a list • (car ‘(a b c)) ==> a • (cdr ‘(a b c)) ==> (b c) • (first ‘(a b c)) ==> a • (second ‘(a b c)) ==> b • (nth 1 ‘(a b c)) ==> b • Constructing a list • (cons ‘a ‘(b c)) ==> (a b c) • (cons ‘a nil) ==> (a) • (cons ‘(a b) ‘(c d)) ==> ((a b) c d) Artificial Intelligence

  11. Nested lists, structure, car/cdr recursion • More list construction • (append ‘(a b) ‘(c d)) ==> (a b c d) • (cons ‘(a b) ‘(c d)) ==> ((a b) c d) • Counting the number of elements in the list • (length ‘((1 2) 3 (1 (4 (5))))) ==> 3 Artificial Intelligence

  12. Binding variables: set(1/2) • (setq <symbol> <form>) • bind <form> to <symbol> • <symbol> is NOT evaluated. • (set <place> <form>) • replace s-expression at <place> with <form> • <place> is evaluated. (it must exists.) • (setf <place> <form>) • generalized form of set: when <place> is a symbol, it behaves like setq; otherwise, it behaves like set. Artificial Intelligence

  13. Binding variables: set(2/2) • Examples of set / setq • (setq x 1) ==> 1 ;;; assigns 1 to x • (set a 2) ==> ERROR!! ;;; a is NOT defined • (set ‘a 2) ==> 2 ;;; assigns 2 to a • (+ a x) ==> 3 • (setq l ‘(x y z)) ==> (x y z) • (set (car l) g) ==> g • l ==> (g y z) • Examples of setf • (setf x 1) ==> 1 • (setf a 2) ==> 2 • (+ a x) ==> 3 • (setf l ‘(x y z)) ==> (x y z) • (setf (car l) g) ==> g • l ==> (g y z) Artificial Intelligence

  14. Local variables: let(1/2) • Consider a function to compute roots of a quadratic equation: ax2+bx+c=0 • (defun quad-roots1 (a b c) (setq temp (sqrt (- (* b b) (* 4 a c)))) (list (/ (+ (- b) temp) (* 2 a)) (/ (- (- b) temp) (* 2 a)))) • (quad-roots1 1 2 1) ==> (-1.0 -1.0) • temp ==> 0.0 • Local variable declaration using let • (defun quad-roots2 (a b c) (let (temp) (setq temp (sqrt (- (* b b) (* 4 a c)))) (list (/ (+ (- b) temp) (* 2 a)) (/ (- (- b) temp) (* 2 a))))) Artificial Intelligence

  15. Local variables: let(2/2) • Any variables within letclosure are NOT bound at top level. • More improvement (binding values in local variables) • (defun quad-roots3 (a b c)(let ((temp (sqrt (- (* b b) (* 4 a c)))) ((denom (*2 a))) (list (/ (+ (- b) temp) denom) (/ (- (- b) temp) denom)))) Artificial Intelligence

  16. For Homework • Representing predicate calculus with LISP • ∀x likes (x, ice_cream) (Forall (VAR X) (likes (VAR X) ice_cream)) • ∃x foo (x, two, (plus two three)) (Exist (VAR X) (foo (VAR X) two (plus two three))) • Connectives • ¬S (nott S) • S1∧ S2 (ANDD S1 S2) • S1∨ S2 (ORR S1 S2) • S1→ S2 (imply S1 S2) • S1≡ S2 (equiv S1 S2) • Do not use the builtin predicate names. Artificial Intelligence

  17. For Homework • 숙제를 간략하게 하기 위해서 다음 predicate만을 atomic sentence라고 가정한다. • true, false • likes (george, kate) likes (x, george) likes (george, susie) likes (x, x) likes (george, sarah, tuesday) friends (bill, richard) friends (bill, george) friends (father_of(david), father_of(andrew)) helps (bill, george) helps (richard, bill) equals (plus (two, three), five) Artificial Intelligence

  18. For Homework (DEFUN atomic_s (Ex) (cond ((member Ex ‘(true false)) T) ((member (car Ex) ‘(likes …)) (Test_term (cdr Ex))) (T nil))) (DEFUN Test_term (ex1) (cond ((NULL ex1) T) ((member (car ex1) ‘(george …..) (test_term (cdr ex1))) ((VARP (car ex1)) (test_term (cdr ex1))) ((functionp (car ex1)) (test_term (cdr ex1))) (T nil))) Artificial Intelligence

  19. Recursion Templates • Recursion template • A few standard forms of recursive Lisp functions. • You can create new functions by choosing a template and filling in the blanks. • Recursion templates의 종류 ① Double-Test Tail Recursion ② Single-Test Tail Recursion ③ Single-Test Augmenting Recursion ④ List-Consing Recursion ⑤ Simultaneous Recursion on Several Variables ⑥ Conditional Augmentation ⑦ Multiple Recursion ⑧ CAR/CDR Recursion Artificial Intelligence

  20. Double-Test Tail Recursion • Template : (DEFUN func (X) (COND (end-test-1 end-value-1) (end-test-2 end-value-2) (T (func reduced-x)))) • Example : Func : ANYODDP End-test-1 : (NULL X) End-value-1 : NIL End-test-2 : (ODDP(FIRST X)) E nd-value-2 : T Reduced-x : (REST X) (defun anyoddp (x) (cond ((null x) nil) ((oddp (first x)) t) ((t (anyoddp (rest x)))) Artificial Intelligence

  21. Single-Test Tail Recursion • Template : (DEFUN func (X) (COND (end-test end-value) (T (func reduced-x)))) • Example : Func : FIND-FIRST-ATOM End-test : (ATOM X) End-value : X Reduced-x : (FIRST X) (defun find-first-atom (x) (cond ((atom x) x) ((t (find-first-atom (first x)))) Artificial Intelligence

  22. Single-Test Augmenting Recursion(1/2) • Template : (DEFUN func (X) (COND (end-test end-value) (T (aug-fun aug-val) (func reduced-x)))) • Example1 : Func : COUNT-SLICES End-test : (NULL X) End-value : 0 Aug-fun : + Aug-val : 1 Reduced-x : (REST X) (defun count-slices (x) (cond ((null x) 0) (t (+ 1 (count-slices (rest x)))))) Artificial Intelligence

  23. Single-Test Augmenting Recursion(2/2) • Example2: The Factorial Function (defun fact (n) (cond ((zerop n) 1) (t (* n (fact (- n 1)))))) Artificial Intelligence

  24. List-Consing Recursion(A Special Case of Augmenting Recursion) • Template : (DEFUN func (N) (COND (end-test NIL) (T (CONS new-element (func reduced-n))))) • Example : Func : LAUGH End-test : (ZEROP N) New-element : ‘HA Reduced-n : (- N 1) (defun laugh (n) (cond ((zerop n) nil) (t (cons ‘ha (laugh (- n 1)))))) Artificial Intelligence

  25. Simultaneous Recursion on Several Variables(Using the Single-Test Recursion Template) • Template : (DEFUN func (N X) (COND (end-testend-value) (T (func reduced-n reduced-x)))) • Example : Func : MY-NTH End-test : (ZEROP N) End-value : (FIRST X) Reduced-n : (- N 1) Reduced-x : (REST X) (defun my-nth (n x) (cond ((zerop n) (first X) (t (my-nth (- n 1) (rest x))))) Artificial Intelligence

  26. Conditional Augmentation (1/2) • Template (DEFUN func (X) (COND (end-testend-value) (aug-test (aug-fun aug-val (func reduced-x))) (T (func reduced-x)))) • Example Func : EXTRACT-SYMBOLS End-test : (NULL X) End-value : NIL Aug-test : (SYMBOLP (FIRST X)) Aug-fun : CONS Aug-val : (FIRST X) Reduced-x : (REST X) Artificial Intelligence

  27. Conditional Augmentation (2/2) (defun extract-symbols (X) (cond ((null x) nil) ((symbolp (first x)) (cons (first x) (extract-symbols (rest x)))) (t (extract-symbols (rest x))))) Artificial Intelligence

  28. Multiple Recursion(1/2) • Template : (DEFUN func (X) (COND (end-test1end-value-1) (end-test2end-value-2) (T (combiner (func first-reduced-n) (func second-reduced-n))))) • Example : Func : FIB End-test-1 : (EQUAL N 0) End-value-1 : 1 End-test-2 : (EQUAL N 1) End-value-2 : 1 Combiner : + First-reduced-n : (- N 1) Second-reduced-n : (- N 2) Artificial Intelligence

  29. Multiple Recursion(2/2) (defun fib (n) (cond (equal n 0) 1) (equal n 1) 1) (t (+ (fib (- n 1)) (fib (- n 2)))))) Artificial Intelligence

  30. CAR/CDR Recursion(A Special Case of Multiple Recursion)(1/2) • Template : (DEFUN func (X) (COND (end-test-1end-value-1) (end-test-2end-value-2) (T (combiner (func CAR X)) (func (CDR X)))))) • Example : Func : FIND-NUMBER End-test-1 : (NUMBERP X) End-value-1 : X End-test-2 : (ATOM X) End-value-2 : NIL Combiner : OR Artificial Intelligence

  31. CAR/CDR Recursion(A Special Case of Multiple Recursion)(2/2) (defun find-number (x) (cond ((numberp x) x) ((atom x) nil) (t (or (find-number (car x)) (find-number (cdr x)))))) Artificial Intelligence

  32. 연습문제 • VECTORPLUS X Y : Write a function (VECTORPLUS X Y) which takes two lists and adds each number at the same position of each list. • 예) (VECTORPLUS ‘(3 6 9 10 4) ‘(8 5 2)) → (11 11 11 10 4) • 답) (DEFUN VECPLUS (X Y) (COND ((NULL X) Y) ((NULL Y) X) (T (CONS (+ (CAR X) (CAR Y) (VECPLUS (CDR X) (CDR Y)))))) Artificial Intelligence

More Related