[R] 함수에 대하여
1. 함수는 다른 함수의 인자(argument)로 쓰일 수 있다.
2. 함수 내에 함수를 정의할 수 있다.
3. 함수 호출 시 인자 매칭(matching) 순서는 exact > partial > position 이다.
4. 에러가 발생하지 않는 한, 사용하지 않는 인자가 함수에 있어도 무방하다.(lazy evaluation)
5. 함수 탐색 순서는 search() 를 통해 확인 가능하다.
- global environment 일등, base package 꼴지
- 새로운 패키지 library 로 로드하면 자동 2등
6. 함수명과 함수가 아닌 object명은 같은 걸 사용해도 R에서 구분하여 작동한다.
7. Lexical scoping
- 함수의 인자 리스트에는 없지만 함수에 사용되는 변수를 free variable 이라 함
① free variable 의 값은 함수가 정의된 environment에서 검색
② 해당 environment 에 free variable 에 대응되는 값이 없으면 parent env에서 검색
③ ②에서 찾지 못하면 top-level environment 될 때 까지 검색
④ ③에서 찾지 못하면 empty environment 검색
⑤ 주어진 symbol에 대한 값(value) 찾지 못하면 error
○ environment 란?
- a collection of (symbol, value) pairs
- a function + an environment = a closure or function closure
- 모든 environment 는 parent environment를 가지며,
어떤 environment 는 여러 "children" 을 가질 수 있다.
- parent 를 갖지 않는 유일한 envrionment 는 empty environment 이다.
- top-level environment (보통 global environment, workspace 또는 패키지의 namespace)