기본 함수
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 |
---|