평가란?
코드가 계산되어 값을 만드는 것
일급 함수란?
- 값으로 다룰 수 있다.
- 값이나 함수를 변수에 담을 수 있다.
- 함수의 인자로 사용될 수 있다. (parameter)
- 함수의 결과로 사용될 수 있다.(return 값으로 함수가 올 수 있다)
함수형 프로그래밍은 '일급 함수'의 성질을 가지며 이 성질을 활용하면 많은 조합성을 만들어내고 추상화의 좋은 도구로써 사용할 수 있음
고차 함수란?
- 일급 함수의 성질을 이용해서 함수를 값으로 다루는 함수
- 함수를 인자로 받아서 안에서 실행해주는 함수
```
const apply = f => f(1);
// 함수가 함수의 인자로써 '함수'를 받아서 안에서 실행
const add2 = a => a+2;
console.log(apply(add2)); // 결과값 3
// === (a=> a+2) => (a=> a+2)(1);
const times = (f,n) => {
let i = -1;
while(++i < n) f(i);
}
times(console.log,3);
times(a=>console.log(a+10),3);
// 이러한 프로그래밍 기법을 Applicative 프로그래밍이라고 한다.
```
- 함수를 만들어서 리턴하는 함수 (클로저)
```
const addMaker = a => b => a+b;
const add10 = addMaker(10);
console.log(add10(5));
```