Download presentation
Presentation is loading. Please wait.
Published byJasmine Bryant Modified over 9 years ago
2
KU NLP Artificial Intelligence1 Ch 15. An Introduction to LISP q 15.0 Introduction q 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
3
KU NLP Artificial Intelligence2 15.0 Characteristics of LISP 1. Language for artificial intelligence programming a. Originally designed for symbolic computing 2. Imperative language a. Describe how to perform an algorithm b. Contrasts with declarative languages such as PROLOG 3. Functional programming a. Syntax and semantics are derived from the mathematical theory of recursive functions. b. Combined with a rich set of high-level tools for building symbolic data structures such as predicates, frames, networks, and objects 4. Popularity in the AI community a. Widely used as a language for implementing AI tools and models b. High-level functionality and rich development environment make it an ideal language for building and testing prototype systems.
4
KU NLP Artificial Intelligence3 15.1 LISP: A Brief Overview q Syntactic elements of LISP Symbolic expressions : S-expressions 3 Atom : basic syntactic units 3 List Both programs and data are represented as s-expressions q Atom Letters (upper, lower cases) Numbers Characters : * + - / @ $ % ^ & _ ~. Example 3 3.1416 3 Hyphenated-name 3 *some-global* 3 nil 3x3x
5
KU NLP Artificial Intelligence4 List and S-expression q List A sequence of either atoms or other lists separated by blanks and enclosed in parentheses. 3 Example 2 (1 2 3 4) 2 (a (b c) (d (e f))) Empty list “( )” : nil 3 nil is the only s-expression that is considered to be both an atom and a list. q S-expression An atom is an s-expression. If s 1, s 2,…, s n are s-expressions, then so is the list (s 1 s 2 … s n ).
6
KU NLP Artificial Intelligence5 Read-Eval-Print q Interactive Environment User enters s-expressions LISP interpreter prints a prompt q 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. 3 > (* 7 9) 63
7
KU NLP Artificial Intelligence6 Control of LISP Evaluation: quote & eval quote : ‘ prevent the evaluation of arguments 3 (quote a) ==> a 3 (quote (+ 1 3)) ==> (+ 1 3) 3 ‘a ==> a 3 ‘(+ 4 6) ==> (+ 4 6) q eval allows programmers to evaluate s-expressions at will 3 (eval (quote (+ 2 3))) ==> 5 3 (list ‘* 2 5) ==> (* 2 5) 3 (eval (list ‘* 2 5)) ==> 10
8
KU NLP Artificial Intelligence7 Programming in LISP: Creating New Functions q Syntax of Function Definition (defun ( ) ) 3 defun : define function q 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.
9
KU NLP Artificial Intelligence8 Program Control in LISP: Conditionals & Predicates(1/2) q Conditions (cond ( ) ( )... ( <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 q Predicates Example 3 (oddp 3) ; whether its argument is odd or not 3 (minusp 6) 3 (numberp 17)
10
KU NLP Artificial Intelligence9 Conditionals & Predicates(2/2) q Alternative Conditions (if test action-then action-else) 3 (defun absolute-value (x) (if (< x 0) (- x) x)) 3 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 3 Evaluate arguments, stopping when any one of arguments evaluates to nil (or action1... action-n) ; disjunction 3 Evaluate its arguments only until a non-nil value is encountered
11
KU NLP Artificial Intelligence10 List as recursive structures q Cons cell: data structure to hold a list in LISP car - holds the first element. cdr - holds the rest in the list. q 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 q Constructing a list (cons ‘a ‘(b c)) ==> (a b c) (cons ‘a nil) ==> (a) (cons ‘(a b) ‘(c d)) ==> ((a b) c d)
12
KU NLP Artificial Intelligence11 Nested lists, structure, car/cdr recursion q More list construction (append ‘(a b) ‘(c d)) ==> (a b c d) (cons ‘(a b) ‘(c d)) ==> ((a b) c d) q Counting the number of elements in the list (length ‘((1 2) 3 (1 (4 (5))))) ==> 3
13
KU NLP Artificial Intelligence12 Binding variables: set(1/2) q (setq ) bind to is NOT evaluated. q (set ) replace s-expression at with is evaluated. (it must exists.) q (setf ) generalized form of set: when is a symbol, it behaves like setq; otherwise, it behaves like set.
14
KU NLP Artificial Intelligence13 q 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) q 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) Binding variables: set(2/2)
15
KU NLP Artificial Intelligence14 Local variables: let(1/2) q Consider a function to compute roots of a quadratic equation: ax 2 +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)))))
16
KU NLP Artificial Intelligence15 q Any variables within let closure are NOT bound at top level. q 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)))) Local variables: let(2/2)
17
KU NLP Artificial Intelligence16 For Homework q Representing predicate calculus with LISP q ∀ x likes (x, ice_cream) (Forall (VAR X) (likes (VAR X) ice_cream)) q ∃ x foo (x, two, (plus two three)) (Exist (VAR X) (foo (VAR X) two (plus two three))) Connectives ¬ S (nott S) S 1 ∧ S 2 (ANDD S 1 S 2 ) S 1 ∨ S 2 (ORR S 1 S 2 ) S 1 → S 2 (imply S 1 S 2 ) S 1 ≡ S 2 (equiv S 1 S 2 ) q Do not use the builtin predicate names.
18
KU NLP Artificial Intelligence17 For Homework q 숙제를 간략하게 하기 위해서 다음 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)
19
KU NLP Artificial Intelligence18 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)))
20
KU NLP Artificial Intelligence19 Recursion Templates q Recursion template A few standard forms of recursive Lisp functions. You can create new functions by choosing a template and filling in the blanks. q 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
21
KU NLP Artificial Intelligence20 Double-Test Tail Recursion q Template : (DEFUN func (X) (COND (end-test-1 end-value-1) (end-test-2 end-value-2) (T (func reduced-x)))) q Example : Func :ANYODDP End-test-1 : (NULL X) End-value-1 : NIL End-test-2 : (ODDP(FIRST X)) End-value-2 :T Reduced-x :(REST X) (defun anyoddp (x) (cond ((null x) nil) ((oddp (first x)) t) ((t (anyoddp (rest x))))
22
KU NLP Artificial Intelligence21 Single-Test Tail Recursion q Template : (DEFUN func (X) (COND (end-test end-value) (T (func reduced-x)))) q 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))))
23
KU NLP Artificial Intelligence22 Single-Test Augmenting Recursion(1/2) q Template : (DEFUN func (X) (COND (end-test end-value) (T (aug-fun aug-val) (func reduced-x)))) q 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))))))
24
KU NLP Artificial Intelligence23 Single-Test Augmenting Recursion(2/2) q Example2: The Factorial Function (defun fact (n) (cond ((zerop n) 1) (t (* n (fact (- n 1))))))
25
KU NLP Artificial Intelligence24 List-Consing Recursion (A Special Case of Augmenting Recursion) q Template : (DEFUN func (N) (COND (end-test NIL) (T (CONS new-element (func reduced-n))))) q 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))))))
26
KU NLP Artificial Intelligence25 Simultaneous Recursion on Several Variables (Using the Single-Test Recursion Template) q Template : (DEFUN func (N X) (COND (end-test end-value) (T (func reduced-n reduced-x)))) q 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)))))
27
KU NLP Artificial Intelligence26 Conditional Augmentation (1/2) q Template (DEFUN func (X) (COND (end-test end-value) (aug-test (aug-fun aug-val (func reduced-x))) (T (func reduced-x)))) q 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)
28
KU NLP Artificial Intelligence27 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)))))
29
KU NLP Artificial Intelligence28 Multiple Recursion(1/2) q Template : (DEFUN func (X) (COND (end-test1 end-value-1) (end-test2 end-value-2) (T (combiner (func first-reduced-n) (func second-reduced-n))))) q 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)
30
KU NLP Artificial Intelligence29 Multiple Recursion(2/2) (defun fib (n) (cond (equal n 0) 1) (equal n 1) 1) (t (+ (fib (- n 1)) (fib (- n 2))))))
31
KU NLP Artificial Intelligence30 CAR/CDR Recursion (A Special Case of Multiple Recursion)(1/2) q Template : (DEFUN func (X) (COND (end-test-1 end-value-1) (end-test-2 end-value-2) (T (combiner (func CAR X)) (func (CDR X)))))) q Example : Func :FIND-NUMBER End-test-1 : (NUMBERP X) End-value-1 : X End-test-2 : (ATOM X) End-value-2 : NIL Combiner :OR
32
KU NLP Artificial Intelligence31 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))))))
33
KU NLP Artificial Intelligence32 연습문제 q 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) q답)q답) (DEFUN VECPLUS (X Y) (COND ((NULL X) Y) ((NULL Y) X) (T (CONS (+ (CAR X) (CAR Y) (VECPLUS (CDR X) (CDR Y))))))
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.