관심있는 것들 정리

elisp form, eval, 함수, special form 본문

utility 사용법/emacs

elisp form, eval, 함수, special form

내공강화 2015. 2. 4. 01:50

S식은 양면성을 가지고 있는데, 하나는 단지 데이터 자체라는 것이고 또 다른 하나는 프로그램이라는 것으로 이 양면성은 Lisp 최대 특징이다.
간단히 예기하면 단순히 구성 요소로 볼 것이냐 프로그램으로 볼 것이냐 라는 의미이다

예를 들어 (+ 10 5)라는 S 식을 생각해보면, 데이터로 볼 경우 +와 10과 5를 요소로 구성하는 리스트다. 프로그램으로 볼 경우 10과 5를 더하는 식이다. 

프로그램으로 볼 경우의 S식을 form이라 한다. 그리고 이 form을 평가(evaluation)해서 실행한다. 

평가(evaluation, 줄여서 eval)은 form을 실행하고 값을 얻는 것이다.

eval은 4가지 규칙이 존재한다.

1. 수치, 문자열, t, nil을 평가할 경우, 값 그대로가 결과가 된다 (t는 true, nil은 t가 아닌 것)

2. quote 처리된 S식은 quote를 뺀 나머지가 그대로 결과가 된다

3. 심볼을 평가하면, 그 변수의 값이 결과가 된다.

4. 리스트를 평가하면, 함수 또는 special form을 호출한다.

여기서 함수는 미리 기술이 되어 저장되어 있는 어떠한 처리 또는 논리를 의미한다. 리스트의 제일 앞에 나오는 심볼이 함수 이름이다. 나머지 요소는 인수로 함수에 넘겨지는 값(parameter)이다. 

** 함수가 호출되기 전, 인수들은 좌 —> 우 로 먼저 평가되고 평가된 결과들이 함수로 전달되면서 함수가 호출된다

special form은 함수같은 것인데 parameter의 평가에 대해 제어할 수 있는 것을 말한다. 특정 parameter에 대해 평가하지 않고 special form 형태로 함수로 전달할 수 있다. 

==> Form의 평가는 가장 안쪽 리스트부터 좌 —> 우로 parameter를 평가하는 것을 반복해 나가는 작업을 말한다.

반응형

'utility 사용법 > emacs' 카테고리의 다른 글

Emacs 파일 열고 닫기 정리  (0) 2015.03.18
elisp quote  (0) 2015.02.04
elisp comment  (0) 2015.02.04
elisp의 구성요소  (0) 2015.02.04
라인 number 보이기/가리기  (0) 2013.01.01