YongWook's Notes

<인공지능> LISP에 대해 알아보자 - 4 새로운 함수 만들기 본문

-software/AI

<인공지능> LISP에 대해 알아보자 - 4 새로운 함수 만들기

글로벌한량 2016. 3. 6. 03:40

새로운 함수 만들기

이전에 정리한 LISP함수들을 이용하여 새로운 함수를 만드는 과정을 공부해보자.
DEFUN(DEfine FUNction)이라는 함수를 이용하면 새로운 함수를 만들어서 사용할 수 있는데 그 사용법에 대해 다뤄보자.

(DEFUN <함수이름> (<인자들>)	
		<수행문장들>)

*코드 첫번째 행의 (<인자들>) 뒤에 바로 붙여서 <수행문장들>을 입력해도 되지만 가독성을 위해 줄을 바꾸어 준다.


예를들어 세 수를 더하는 새로운 함수를 작성할 수 있다.

(DEFUN THREEPLUS (X Y Z)
		(+ X (+ Y Z))



예제

주어진 리스트 내의 모든 레벨에서 찾을 수 있는 아톰의 개수를 반환하는 함수 LENGTH를 작성하시오.

(DEFUN MY-LENGTH (L)
	(IF (NULL L) 0
			(+ (IF (ATOM (CAR LIST)) 1
					(MY-LENGTH (CAR L)) )
				(MY-LENGTH (CDR L)))))

작성된 코드의 사용 예는 다음과 같다.

> (MY-LENGTH '(A B C))
  3
> (MY-LENGTH '(A (B C) D (E F)))
  6
> (MY-LENGTH '(A NIL (B C) D))
  5


Comments