Presentation is loading. Please wait.

Presentation is loading. Please wait.

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.

Similar presentations


Presentation on theme: "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."— Presentation transcript:

1

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))))))


Download ppt "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."

Similar presentations


Ads by Google