ku nlp artificial intelligence1 ch 15. an introduction to lisp q 15.0 introduction q 15.1 lisp: a...

32
Artificial Intelligence 1 KU NLP KU NLP Ch 15. An Introduction to LISP 15.0 Introduction 15.1 LISP: A Brief Overview 15.1.1 Symbolic Expressions, the Syntactic Basis o f 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 P redicates 15.1.5 Functions, Lists, and Symbolic Computing 15.1.6 Lists as Recursive Structures 15.1.7 Nested Lists, Structure, and car/cdr Recurs ion 15.1.8 Binding Variables Using set 15.1.9 Defining Local Variables Using let 15.1.10 Data Types in Common LISP

Upload: jasmine-bryant

Post on 12-Jan-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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

Artificial Intelligence 1

KU NLPKU NLP

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 Predicate

s 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

Page 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

Artificial Intelligence 2

KU NLPKU NLP

15.0 Characteristics of LISP

1. Language for artificial intelligence programminga. Originally designed for symbolic computing

2. Imperative languagea. Describe how to perform an algorithmb. Contrasts with declarative languages such as PROLOG

3. Functional programminga. 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 communitya. Widely used as a language for implementing AI tools and modelsb. High-level functionality and rich development environment make it

an ideal language for building and testing prototype systems.

Page 3: 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

Artificial Intelligence 3

KU NLPKU NLP

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

Page 4: 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

Artificial Intelligence 4

KU NLPKU NLP

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

Page 5: 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

Artificial Intelligence 5

KU NLPKU NLP

Read-Eval-Print

Interactive EnvironmentUser enters s-expressionsLISP 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

Page 6: 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

Artificial Intelligence 6

KU NLPKU NLP

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

Page 7: 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

Artificial Intelligence 7

KU NLPKU NLP

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.

Page 8: 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

Artificial Intelligence 8

KU NLPKU NLP

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)

Page 9: 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

Artificial Intelligence 9

KU NLPKU NLP

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

Page 10: 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

Artificial Intelligence 10

KU NLPKU NLP

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)

Page 11: 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

Artificial Intelligence 11

KU NLPKU NLP

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

Page 12: 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

Artificial Intelligence 12

KU NLPKU NLP

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.

Page 13: 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

Artificial Intelligence 13

KU NLPKU NLP

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)

Binding variables: set(2/2)

Page 14: 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

Artificial Intelligence 14

KU NLPKU NLP

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

Page 15: 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

Artificial Intelligence 15

KU NLPKU NLP

Any variables within let closure 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))))

Local variables: let(2/2)

Page 16: 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

Artificial Intelligence 16

KU NLPKU NLP

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.

Page 17: 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

Artificial Intelligence 17

KU NLPKU NLP

For Homework

숙제를 간략하게 하기 위해서 다음 predicate 만을 at

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

Page 18: 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

Artificial Intelligence 18

KU NLPKU NLP

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

Page 19: 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

Artificial Intelligence 19

KU NLPKU NLP

Recursion Templates

Recursion template A few standard forms of recursive Lisp functions. You can create new functions by choosing a template and filling in t

he 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

Page 20: 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

Artificial Intelligence 20

KU NLPKU NLP

Double-Test Tail Recursion

Template :(DEFUN func (X) (CON

D (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 : NILEnd-test-2 : (ODDP(FIRST X))E nd-value-2 : TReduced-x : (REST X)

(defun anyoddp (x) (cond ((null x) nil) ((oddp (first x)) t) ((t (anyoddp (rest x))))

Page 21: 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

Artificial Intelligence 21

KU NLPKU NLP

Single-Test Tail Recursion

Template :(DEFUN func (X) (CO

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

Page 22: 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

Artificial Intelligence 22

KU NLPKU NLP

Single-Test Augmenting Recursion(1/2)

Template :(DEFUN func (X) (CO

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

Page 23: 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

Artificial Intelligence 23

KU NLPKU NLP

Single-Test Augmenting Recursion(2/2)

Example2: The Factorial Function

(defun fact (n)

(cond ((zerop n) 1)

(t (* n (fact (- n 1))))))

Page 24: 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

Artificial Intelligence 24

KU NLPKU NLP

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

Page 25: 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

Artificial Intelligence 25

KU NLPKU NLP

Simultaneous Recursion on Several Variables(Using the Single-Test Recursion Template)

Template :(DEFUN func (N X)

(COND (end-test end-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)))))

Page 26: 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

Artificial Intelligence 26

KU NLPKU NLP

Conditional Augmentation (1/2)

Template(DEFUN func (X)

(COND (end-test end-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)

Page 27: 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

Artificial Intelligence 27

KU NLPKU NLP

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

Page 28: 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

Artificial Intelligence 28

KU NLPKU NLP

Multiple Recursion(1/2)

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

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)

Page 29: 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

Artificial Intelligence 29

KU NLPKU NLP

Multiple Recursion(2/2)

(defun fib (n)

(cond (equal n 0) 1)

(equal n 1) 1)

(t (+ (fib (- n 1))

(fib (- n 2))))))

Page 30: 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

Artificial Intelligence 30

KU NLPKU NLP

CAR/CDR Recursion(A Special Case of Multiple Recursion)(1/2)

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

Example :Func : FIND-NUMBER

End-test-1 : (NUMBERP X)

End-value-1 : X

End-test-2 : (ATOM X)

End-value-2 : NIL

Combiner : OR

Page 31: 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

Artificial Intelligence 31

KU NLPKU NLP

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

Page 32: 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

Artificial Intelligence 32

KU NLPKU NLP

연습문제

VECTORPLUS X Y: Write a function (VECTORPLUS X Y) which takes two lists an

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