LISP 6 4 LISP Predicate TTrue NILFalse ATOM

  • Slides: 32
Download presentation
LISP

LISP

6. 4 기본적인 LISP의 함수들 Predicate : T(True) 또는 NIL(False)을 값으로 반환하는 함수 Ø

6. 4 기본적인 LISP의 함수들 Predicate : T(True) 또는 NIL(False)을 값으로 반환하는 함수 Ø (ATOM X) Ø (NULL X) Ø (NUMBERP X) Ø (ZEROP X) Ø (MINUSP X) Ø (EQUAL X Y) 논리 연산자 : AND, OR, NOT Ø (NOT X) Ø (AND X 1 XN) Ø (OR X 1 XN) 조건문(IF) : (IF THEN) 형식과 (INF THEN ELSE) 형식을 갖는다 Ø (IF (> X 3)(PRINT X)) Ø (IF (> X 3)(PRINT X)(+ X 5)) 인공지능의 14 이해

PROG를 이용한 LENGTH함수의 정의 (DEFUN LENGTH (L) (PROG (COUNT) (SETQ COUNT 0) LOOP (COND

PROG를 이용한 LENGTH함수의 정의 (DEFUN LENGTH (L) (PROG (COUNT) (SETQ COUNT 0) LOOP (COND ((NULL L)(RETURN COUNT))) (SETQ COUNT (+ COUNT 1) (SETQ L (CDR L)) (GO LOOP) )) 인공지능의 18 이해

Recursive call을 이용한 LENGTH함수의 정의 o (DEFUN LENGTH (L) (COND ((NULL L) 0) (T

Recursive call을 이용한 LENGTH함수의 정의 o (DEFUN LENGTH (L) (COND ((NULL L) 0) (T (1+ (LENGTH (CDR L) ) ) 인공지능의 21 이해

LAST함수와 MEMBER, APPEND, ERVERSE 함수를 재귀적으로 정의 o (DEFUN LAST (L) (COND ((NULL L)

LAST함수와 MEMBER, APPEND, ERVERSE 함수를 재귀적으로 정의 o (DEFUN LAST (L) (COND ((NULL L) NIL) ((NULL (CDR L)) L) (T (LAST (CDR L))) )) Ø(DEFUN MEMVER (X L) (COND ((NULL L) NIL) ((EQUAL X (CAR L)) L) (T (MEMBER X (CDR L)) ))) Ø(DEFUN APPEND (X Y) (COND ((NULL X) Y) (T (CONS (CAR X) APPEND (CDR X) Y))) )) 인공지능의 22 이해

함수 FACTORIAL n n n > (DEFUN FACTORIAL (N) (IF (= N 1) 1

함수 FACTORIAL n n n > (DEFUN FACTORIAL (N) (IF (= N 1) 1 (* N (FACTORIAL (- N 1))) ) ) FACTORIAL 인공지능의 25 이해

TRACE 함수 n n > (TRACE FACTORIAL) (FACTORIAL) 인공지능의 26 이해

TRACE 함수 n n > (TRACE FACTORIAL) (FACTORIAL) 인공지능의 26 이해

해답 n n n (DEFUN MY-LENGHT (L) (IF (NULL L) 0 (+ (IF (ATOM

해답 n n n (DEFUN MY-LENGHT (L) (IF (NULL L) 0 (+ (IF (ATOM (CAR LIST)) 1 (MY-LENGTH (CAR L)) ) (MY-LENGTH (CDR L))))) 사용 예는 다음과 같다. > (MY-LENGHT ‘(A B C)) 3 > (MY-LENGHT ‘(A (B C) D (E F))) 6 > (MY-LENGHT ‘(A NIL (B C) D)) 5 인공지능의 29 이해

EVAL: EVAL 함수는 인자를 실행하여 값을 얻는다. n> (EVAL '(+ 2 2)) ; RETURNS

EVAL: EVAL 함수는 인자를 실행하여 값을 얻는다. n> (EVAL '(+ 2 2)) ; RETURNS 4 n> (EVAL (CONS '+ '(2 2 2))) ; RETURNS 6 n> (EVAL (LIST '+ '2 '3 )) ; RETURNS 5 n> (SETQ A 10) n 10 n> (SETQ B 220) n 220 n> (EVAL (LIST '+ A B )) n 230 n> ; (LIST '+ A B) => '(+ 10 220) (EVAL (LIST '+ 'A B)) ; RETURNS 230 n; ; RETURNS 230 ; (LIST '+ 'A B) => '(+ A 220) A 값은 10 인공지능의 32 이해