사용자 정의 함수
형태 : (defun name (param1 param2 …) body )
Defun은 인수들을 평가하지 않는다 . 다른 함수처럼 보이는 함수를 생성할 뿐 .
예제) 5개의 인수를 받아서 평균을 구하는 함수
(defun averagefive(n1 n2 n3 n4 n5)
( / (+ n1 n2 n3 n4 n5 ) 5 )
함수를 만들었으니 실행을 해보자 .
Averagefive( 1 2 3 4 5 )
è 3
여기서 우리가 알아야 할 사실은 하수를 정의 할 때 작성된 순서대로 각 매개변수에 할당해야 한다 .
술어함수 ( Predicate Functions )
è 인수가 어떤 특정 상태와 일치하는지를 테스트하는 함수
è 인수를 판정한 결과 참 ( t ) 혹은 거짓 ( nil )중의 하나의 값을 되돌려 준다
술어함수 종류
è Atom : 하나의 인수를 취하고 , 그 인수가 원소일 경오 t를 반환 아니면 nil반환
è Equal : 2개의 인수를 취하며 , 그 2개의 인수가 같은 값이면 t 아니면 nil반환
è Evenp : 짝수이면 T 아니면 nil 반환
è Oddp : 홀수이면 T 아니면 nil 반환
è Numberp : 숫자 이면 T 아니면 nil 반환
è Zerop : 제로이면 T 아니면 nil 반환
è Greaterp : 왼쪽 à 오른쪽 갈수록 점점 커진다.
è Lessp : 왼쪽 à 오른쪽 갈수록 연속적으로 작지 않다.
è Listp : 인수가 리스트로 평가될 때 T 아니면 nil 반환
è Nullp : 인수가 nil로 평가되면 T 아니면 nil 반환
조건문 ( Conditiona Cond )
è Cond는 if – then – else 구조와 같다.
è 식으로 나타내면 다음과 같다 .
è ( cond ( <test1> < action a> )…..
예제를 통해서 익혀보자.
두 숫자 중 최대의 숫자를 되돌려 주는 아래의 함수 maximum을 통해서 확인해보자.
(defun maximum( a b )
( cond ( ( > a b ) a )
( t b )))
위 maximum의 함수는 a b라는 2개의 인수를 사용하고 , a가 b보다 클 때 a를 반환하며 ,
그렇지 않으면 b값을 돌려준다라는 의미이다.
B 앞에 t라는 것이 있는데 t는 첫번째 절이 평가가 되어 지지 않는다면 마지막 절이 반드시 평가되어 지도록 하는 역할을 한다 .
논리함수 ( Logical Functions )
è 실행순서 통제를 위하여 사용되어질 수 있다.
è Not : 하나의 인수를 취하며 , 그 인수가 nil로 평가되면 t로 리턴하고 , 인수가 non-nil로 평가되면 nil을 리턴한다
è Or : 몇 개의 인수를 가질 수 있고 , 왼쪽à 오른쪽으로 평가 , 어느 하나가 non-nil이 될 때까지 평가를 계속하다가 non-nil이 있을 경우 그 non-nil의 값을 되돌려 주고 , 그렇지 않을 경우 nil을 되돌려 준다
è And : 몇 개의 인수를 가질 수 있고 , 모든 인수가 non-nil로 평가된다면 마지막 인수의 값이 되돌려 진다 .
몇 가지 예를 들어서 확인해 보자
'학부공부 > 인공지능' 카테고리의 다른 글
LISP 에서의 입력과 출력 (0) | 2018.10.03 |
---|---|
LISP에서의 사용자 정의 함수 , 술어 함수 , 조건문 , 논리함수 (0) | 2018.10.03 |
LISP 문법과 산술연산 함수 (0) | 2018.09.30 |
연습문제를 풀어보자. (0) | 2018.09.27 |
CLISP 맛보기 (0) | 2018.09.21 |
#IT #먹방 #전자기기 #일상
#개발 #일상