4. • 코드 블럭 내에서 사용되었지만, 해당 블럭 내에 정의되지 않은 변수
• Global variable 과는 다른 개념임
Free variable
x is free variable
x is global variable x is local variable
x is free variable
y is local variable
5. • First Class (Citizen, Type, Object, Entity, Value)
• 다른 개체들이 이용 가능한 일반적인 기능들을 모두 지원하는 개체
First Class Citizen
7. • 대표적인 예로 scalar 데이터 타입은 거의 다 First Class Citizen
• 7R IKIV JPS RK TS R I G
• 일부 언어들에서, array와 string 은 First Class Citizen 이 아님
• | d | uw en | tw
First Class Citizen
-
8. • 함수를 First Class Citizen 처럼 다룰수 있다는 것을 의미
• s | t r
• s | r
• u q g r
• k q g r
First Class Function
.
10. • 다른 함수 안에 정의된 함수를 말함
• 내부 함수는 scope chain 에 의해 다음과 같은 특징을 가짐
• o y l r
• y l r
• y l r
• l r
Nested Function
11. • Nested Function 과 유사한 개념
• 내부 함수가 외부 함수가 종료된 후에도 외부 함수의 값을
참조하거나 동작 하는 행위를 말함
Closures
12. • Nested Function 가 Closures 를 포괄하는 큰 개념임
Nested Function 과 Closures
(
Nested Function : O
Closures : O
Nested Function : O
Closures : X
13. • Python 에서 Free variable 값이 어디 저장되는 지 알려줌
Closure in python
)
14. • 아래 조건 중 하나 이상을 만족하는 경우를 말함
• | n i q h
• | q h
• 비슷한 예시로 map 이나 callback 함수등이 있음
Higher Order Function
15. • 함수 인자의 일부를 미리 전달해 둔 함수를 생성하여 사용하는 것
• 함수의 여러개의 인자중 일부를 미리 입력 받아두어 사용하는 것
Partial Application
16. 언어별 지원 현황
,
Language
Higher-order Functions Nested Functions Non-local variables
Arguments Results Named Anonymous Clousers Partial application
C Yes Yes No No No No
C++ Yes Yes C++11 C++11 C++11 C++11
Python Yes Yes Yes
Expressions
Only
Yes 2.5
PHP Yes Yes Yes 5.3 5.3 No
30. • Loop 의 Iteration 을 제어하는 특수한 로직
• 모든 Generator 는 Iterator 임
Generator 란?
)
31. • Generator 는 array 를 리턴하는 함수와 매우 유사
• 0VV q q x …
• Generator 는 한번에 하나의 값만 반환
• Generator 는 함수처럼 보이나, 실제로는 Iterator 의 역할을 수행
Generator 란?
)
32. • Generator 는 일반적으로 루프 안에서 호출 됨
• Generator 는 양보해뒀던(미뤄두었던) 값을 요구할 때만 처리함
• VI Q
• … m fen r WIUYIRGIW y
• v WIUYIRGIW n a H W VI Q
Generator 의 사용
)(
41. L R O y o u
2ST V KL ( - IR IGYV W IQW 7RG 0PP V KL W VIWIV IH
9 40
B 0
80 0
EISY HS ISYP TIR WIGYV GS OV 6
6SYW SR AI W TIR WIGYV GSQ
L RNYOY 9Y ASO S TIR WIGYV GS NT