프로그래밍 언어 강의 시간에 들었던 Lisp 강의를 들으면서 요약했던 부분이다.
지금 보니 뭘 요약, 정리해놓은 건지도 잘 모르겠다..;;
quote(abc) == ‘abc 수정 X
* Interpretation & dynamic typed 언어
* 모든 표현에 대해 평가(evaluate)하고 결과값(retrun value)를 생성함.
* Lexical scoping(scope를 안에만 보는 것:Look inside, never outside, local 우선) indefinite scoping(scoping에 제한 없음)을 사용함.
* Atom(자르면 안됨)과 List 중심의 표현되는 s-expression의 언어
* Atom : refer to just about any s-expression that connot be taken apart
* q는 얼음, 아닌건 땡(…)
* (+ 2 (setq x (* 3 4))) 는 스택 사용, *는 binary operation이므로 parameter가 두 개, x는 중간에 binding 됨.
* ‘( )’ 는 리스트 ‘(‘를 열면 리스트 만듦.
* setq은 pointer와 비슷한 개념
* (set x ‘z)는 (setq y z)와 같다.
* s-expressions은 괄호가 열리면 꼭 닫혀야 한다.
* (a (b c) d) 같은 건 binary tree등을 나타내는데 쓸 수 있음.
* (car (cdr ‘(a b c))) == (cadr ‘(a b c))
* nil은 type이 없다
* function define
(defun fname (v1, …, vn)
(body1) … (bodym))
* predicate: T/nil 을 리턴함
(atom a) -> T: A가 atom 이냐
(atom ‘(a b))
* mapping functions : mutilple operation
* property list : DB, global(또, get, set)