본문 바로가기

기타언어

[LISP] LISt Process language

기본 함수

car : list의 맨 앞에 있는 원소 반환

(car '(a b c))      ->    a

cdr : 맨 앞에 있는 원소를 제외한 나머지 반환

(cdr '(a b c))          -> (b c)

cons : list안에 넣어서 반환

(cons 'a '(b c))      ->  (a b c)
(cons '(a) '(b c))      ->  ((a) b c)

atom : atom이면 true

(atom 'a)   -> T
(atom '(a))   -> NIL

eq : 같으면 true 다르면 false

* atom에만 적용

(eq 'a 'a)      -> T
(eq 'a 'b)     -> NIL
(eq '(a) '(a))     -> NIL

 

기본적으로 전위(prefix)표기

(+ 1 2 3)     ->   6
(- 10 1 2)      ->  7
(and (atom'a) (eq 'a 'a))     -> T
(or (atom'(a)) (eq 'a 'b))     -> NIL

 

cond :  conditional expression 조건문 - if문이라고 이해하자

(cond ((eq (car x) nil) nil)                   -----------1
		((atom (car x)) (cons (car x) lis))    ------2
        (t (cdr x)) )                          -----------3

x의 car이 nil과 같으면 nil을 반환
x의 car이 atom이라면 x의 car과 lis를 cons
1번과 2번조건에 걸리지 않으면 x의 cdr 반환

결국 마지막에 t에 걸리게 되어있다.

 

null : null이면 T를 반환

(null NIL)           ->   T
(null '())           ->   T
(null 'a)           ->   NIL

 

 

LISP library function

equal : 같으면 true 다르면 false

list도 비교가능

(equal 'a 'a)      ->   T
(equal '(a) '(a))      ->   T

기본함수라고 하진않는것은 결국 list에서 element를 하나씩 꺼내서 atom을 eq함수로 비교하기때문

 

reverse : 역순

(reverse '(a b c))        ->   (c b a)

member : 첫 번째 파라미터와 일치하는 element부터 시작하는 두번째 파라미터 리스트 반환

(member 'c '(a b c d e))        ->  (c d e)    일치하는것부터 list 끝까지 반환

 

'기타언어' 카테고리의 다른 글

[LISP] 사용자 정의함수  (0) 2022.05.06