Embed
Email

Ch15 LISP

Document Sample
Ch15 LISP
Shared by: HC111129162919
Categories
Tags
Stats
views:
2
posted:
11/29/2011
language:
English
pages:
32
Ch 15. An Introduction to LISP

KU NLP

 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 1

15.0 Characteristics of LISP

KU NLP



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.





Artificial Intelligence 2

15.1 LISP: A Brief Overview

KU NLP



 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 3

List and S-expression

KU NLP



 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 4

Read-Eval-Print

KU NLP





 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 5

Control of LISP Evaluation:

KU NLP

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 6

Programming in LISP:

KU NLP

Creating New Functions

 Syntax of Function Definition

 (defun ()

)

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

Program Control in LISP:

KU NLP

Conditionals & Predicates(1/2)

 Conditions

 (cond ( )

( )

...

( 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 10

Nested lists, structure,

KU NLP

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 11

Binding variables: set(1/2)

KU NLP





 (setq )

 bind to

 is NOT evaluated.





 (set )

 replace s-expression at with

 is evaluated. (it must exists.)





 (setf )

 generalized form of set: when is a symbol, it behaves like setq;

otherwise, it behaves like set.









Artificial Intelligence 12

Binding variables: set(2/2)

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



Artificial Intelligence 13

Local variables: let(1/2)

KU NLP

 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 14

Local variables: let(2/2)

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









Artificial Intelligence 15

For Homework

KU NLP





 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 16

For Homework

KU NLP



 숙제를 간략하게 하기 위해서 다음 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 17

For Homework

KU NLP



(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 18

Recursion Templates

KU NLP



 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 19

Double-Test Tail Recursion

KU NLP



 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 20

Single-Test Tail Recursion

KU NLP



 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 21

Single-Test Augmenting Recursion(1/2)

KU NLP



 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 22

Single-Test Augmenting Recursion(2/2)

KU NLP



 Example2: The Factorial Function



(defun fact (n)

(cond ((zerop n) 1)

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









Artificial Intelligence 23

List-Consing Recursion

(A Special Case of Augmenting Recursion)

KU NLP



 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 24

Simultaneous Recursion on Several Variables

(Using the Single-Test Recursion Template)

KU NLP



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





Artificial Intelligence 25

Conditional Augmentation (1/2)

KU NLP



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





Artificial Intelligence 26

Conditional Augmentation (2/2)

KU NLP



(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 27

Multiple Recursion(1/2)

KU NLP

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



Artificial Intelligence 28

Multiple Recursion(2/2)

KU NLP



(defun fib (n)

(cond (equal n 0) 1)

(equal n 1) 1)

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

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









Artificial Intelligence 29

CAR/CDR Recursion

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

KU NLP



 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





Artificial Intelligence 30

CAR/CDR Recursion

(A Special Case of Multiple Recursion)(2/2)

KU NLP



(defun find-number (x)

(cond ((numberp x) x)

((atom x) nil)

(t (or (find-number (car x))

(find-number (cdr x))))))









Artificial Intelligence 31

연습문제

KU NLP



 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 32


Related docs
Other docs by HC111129162919
Sheet1
Views: 2  |  Downloads: 0
LACUE 2007 Conference Notes
Views: 0  |  Downloads: 0
APPENDICES
Views: 0  |  Downloads: 0
Continuing Ed 08 09
Views: 3  |  Downloads: 0
University College of Dublin
Views: 1  |  Downloads: 0
Sheet1
Views: 264  |  Downloads: 0
Unit Three Thanks, Mom,
Views: 0  |  Downloads: 0
By registering with docstoc.com you agree to our
privacy policy

You are almost ready to download!

You are almost ready to download!