자바스크립트는 함수형 프로그램 언어는 아니지만 함수를 객체로 취급할 수 있다는 것은 함수형 프로그래밍 기법을 사용할 수 있다는 것이다
map()이나 reduce() 같은 함수는 함수형 프로그래밍 스타일에 적합한 구조를 지니고 있다.
자바스크립트의 함수는 그만큼 강력하다
고차 함수는 하나 이상의 함수를 인자로 받고 새 함수를 반환하는 함수다
커링은 파셜 애플리케이션
커링은 고차 함수와 결합해서 사용할 때 더 흥미롭다
함수형 프로그래밍에서는 이전 계산 결과를 캐싱하는 방식을 메모이제이션이라고 부른다
메모제이션을 구현할 때는 클로저에 객체 변수를 만들어서
값을 저장하는 용도로 사용한다