1. EVAL 함수
- 리슾에서 심장의 역할을 하는 함수다.
- evaluate의 약자로 문자열이 코드라고 가정하고 평가해서 실행한다는 의미
ex) 리슾에서 (+ 3 5) 를 입력하면 8이 나오는 것처럼 (+ 3 5)는 5로 평가된다는 의미
1) 규칙
- Self-evaluating : 숫자 , 그리고 심볼, t와 nil은 자기자신을 반환한다.
ex) 23을 입력하면 23이 출력
- 리스트 eval 규칙
ⓐ 첫번째 요소는 함수이름이어야 한다.
ⓑ 남은 요소들은 함수의 매개변수여야 한다.
ex) (equal (+ 7 5) (* 2 8))
2. Defun 함수
- 매크로 함수이다.
- 함수이름, 매개변수, 함수 바디로 이루어져 있다.
1) 규칙
- Self-evaluating : 숫자 , 그리고 심볼, t와 nil은 자기자신을 반환한다.
ex) 23을 입력하면 23이 출력
- 리스트 eval 규칙
ⓐ 첫번째 요소는 함수이름이어야 한다.
ⓑ 남은 요소들은 함수의 매개변수여야 한다.
ex) (equal (+ 7 5) (* 2 8))
- 특별한 함수
ⓐ 매개변수가 없는 함수
ⓑ quote 함수 : '를 쓰는 대신 quote를 쓸 수도 있다.
ex) '(hello world) = (quote (hello world))
- 빌트인 함수
ex) symbol-name : 심볼로 쓰겠다 (symbol-name 'a) = "a"
symbol-function : 함수로 정의되어 있는지 확인
- lambda 정의 : 함수 이름없이 사용할 수 있는 함수
ex) (lambda (x) (+ 3 x) 10) = 13
- #` : 다른 함수의 입력값으로 제공되는 quote함수의 적절한 방법(?)
영문 : the proper way to quote functions supplied as inputs to other functions.
3. 변수(Variables)
- 데이터가 저장되는 공간이다.
- quoting(') : evaluate하는 것을 막는다.
* (+ 1 2)를 입력하면 3으로 evaluate 되지만 앞에 '를 붙여서 '(+ 1 2)를 하면 문자열 그대로 출력된다.
- 리스트 만드는 방법
ⓐ 전체 괄호 앞에 `를 붙인다. ex) '(foo bar baz)
ⓑ list라고 정의하고 각각의 요소에 '를 붙인다. ex) (list 'foo 'bar 'baz)
- 변수의 범위 : 자체적인 함수 내에서만 사용가능
'Major > Lisp' 카테고리의 다른 글
[Lisp] Ch 11 - 반복문과 블록구조 (Iteration and Block Structure) (0) | 2021.04.15 |
---|---|
[Lisp] Ch 5 - Variables and Side Effects (0) | 2021.04.13 |
[Lisp] Ch 4 - 조건문 (Conditionals) (0) | 2021.04.10 |
[Lisp] Ch 2 - 리스트(Lists) (0) | 2021.04.10 |
[LISP] Ch 1 - 함수와 데이터(Functions and Data) (0) | 2021.03.19 |