★기본개념
### 평가란, 코드가 계산되어 값을 만드는 것을 말한다.
###일급이란, 값으로 다룰 수 있고, 변수에 담을 수 있고 함수의 인자로 사용될 수 있고, 함수의 결과 값으로 사용될 수 있다.
###일급함수란, 함수를 값으로 다룰 수 있다. 변수에 담을 수 있고, 함수를 인자로 넘길 수 있고, 함수를 리턴값으로 넘길 수 있다. ( => 클로저를 리턴한다. )
###고차함수란, 함수를 값으로 다루는 함수
고차함수 예시1
apply_1함수는 함수를 인수로 받아서 그 함수에 1을 인자로 넘겨준다.
add_2는 받은 인자에 2를 더해주는함수이다.
const apply_1 = f => f(1);
const add_2 = a => a+2;
apply1(add2); // => apply_1((1) => 1+2) 3리턴
고차함수 예시2
함수와 특정 값을 인자로 받고, 내부적으로 함수를 실행시켜 인자를 적용시키는 함수 => 어플리케이티브 함수라고도 한다.
const repeater = (f, count) => {
let counter = -1;
while(++counter < count){
f(counter);
}
}
repeater((n) => console.log(n,'째 반복'),3);
고차함수 예시3
함수를 만들어주는 함수 ( = 클로저를 만들어 리턴한다. )
addMaker라는 함수는, 인수 a를 받고 입력하는 값에 a를 더해서 리턴해주는 함수를 반환해준다.
add7함수( a===7이라는 데이터를 기억하는 클로저 )는 addMaker에 7을 인수로 넘기고 리턴받는 함수를 저장한 함수다.
add7함수에 b를 넣으면, 7 + b를 해서 반환한다.
const addMaker = a => b => a + b;
const add7 = addMaker(7);
add7(3); //10출력
'Web > 유인동 함수형 프로그래밍 스터디' 카테고리의 다른 글
Iterable, iterator, generator 개념 (0) | 2020.11.15 |
---|