Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 프로젝트설정
- Npoem
- 객체비교
- 운영체제
- 주니어개발자
- 2차원배열 정렬
- DI
- 컨트리뷰팅
- circuitbreaker
- SpringBoot
- API문서화
- bulk_create
- circular dependency
- 일급함수
- IOC
- resilience4j
- Not Null constraint failed
- 토이프로젝트
- django
- n poem
- cannot import name
- 마이크로서비스패턴
- Java
- 상속모델
- Spring
- GraphQL
- 함수형프로그래밍
- bean-validator
- 좋은코드란
- 쿼리셋합치기
Archives
- Today
- Total
코딩 하는 가든
함수형 프로그래밍 - 일급함수 본문
일급함수
일급함수란?
JavaScript 에서 다음과 같이 변수에 함수를 담을 수 있는 개념을 말한다.
var f1 = function(a) { return a * a; };
물론 함수를 변수에 담을 수 있으니 이 함수를 인자로 넘기는 것도 가능하다.
var f2(f) {
return f();
}
f2(function() {return 20;});
예시
function add_maker(a) {
return function(b) {
return a + b;
}
}
위의 add_maker 함수는 다음과 같은 방법으로 사용 가능하다.
var add10 = add_maker(10);
var add15 = add_maker(15);
var add20 = add_maker(20);
먼저 add10이라는 변수를 만들어 add_maker(10) 을 담아준다. 이 때 add10 에는 function(b) { return 10 + b; } 라는 함수가 담기게 된다. 같은 원리로 add 15, add 20 에는 각각 15+b, 20+b를 리턴하는 함수가 담겨있게 된다.
- add10 - > function(b) { return 10 + b; }
- add15 - > function(b) { return 15 + b; }
- add20 - > function(b) { return 20 + b; }
add10(20); // 결과 : 30
add10(25); // 결과 : 35
add15(30); // 결과 : 45
add20(30); // 결과 : 50
add10 은 들어온 인자에 10을 더하는 함수가 되었으며 add15, add20도 각각 함수가 되었다.
처음 add_maker 안에 들어 있던 함수인 function(b) { return a + b;} 는 들어온 인자에 의해 형태가 결정되며, 한번 형태가 결정이 된 함수는 앞으로 같은 인자에 대한 같은 값을 반환하는데, 이를 closure (폐쇄) 상태라고 한다.
즉 add10에 담긴 함수인 function(b) {return a + b;} 는 a라는 변수에 10이라는 값이 바인딩되어 add10에 담긴 함수에 한해 항상 a = 10을 만족한다는 것이다.
사실 위 개념은 context와 lexical scoping을 곁들여 설명해야 맞는 것 같지만 처음 배우는 초보자의 눈으로 적어놓았다. 기회가 된다면 closure에 대해 심도 있게 들여다봐야겠다.
'함수형프로그래밍' 카테고리의 다른 글
함수형 프로그래밍 - 함수형 예제(1) - _filter, _map 함수 만들기 (0) | 2020.03.16 |
---|---|
함수형 프로그래밍 - 순수함수 (0) | 2020.03.11 |