똑같은 삽질은 2번 하지 말자

Javascript ES6+ 에서 함수형 프로그래밍(평가, 일급, 일차함수, 고차함수) 본문

Javascript

Javascript ES6+ 에서 함수형 프로그래밍(평가, 일급, 일차함수, 고차함수)

곽빵 2021. 8. 16. 22:14

평가

코드가 계산되어 값을 만드는 것

 

일급

  • 값으로 다룰 수 있다.
  • 변수에 담을 수 있다.
  • 함수의 인자, 결과로 사용될 수 있다.
const a = 10; // 변수가 되며, 값으로 다루어진다.
const add10 = a => a + 10; // 함수의 인자로 사용될 수 있다.
const r = add10(a); // 함수의 결과로 사용될 수 있다.

 

일급함수

  • 함수를 값으로 다룰 수 있다.
  • 조합성과 추상화의 도구
const add5 = a => a + 5; // 함수를 값으로 다룰수 있다.
log(add5); // a => a + 5;
log(add5(5)); // 10

const f1 = () => () => 1; // 함수를 리턴하는 함수
log(f1()); // () => 1;

const f2 = f1();
log(f2); // () => 1
log(f2()); // 1

 

고차함수

  • 일급함수가 값으로 다루어 짐으로써 그 일급함수를 값으로 다루는 함수
const apply1 = f => f(1); // 함수를 인자로 받아서 실행하는 함수
const add2 = a => a + 2;
log(apply1(add2)); // 3
log(apply1(a => a - 1)); // 0

const times = (f, n) => { // 함수와 상수를 인자로 받아서 실행하는 함수
  let i = -1;
  while (++i < n) f(i); // 받은 함수를 n만큼 실행
};

times(log, 3);

times(a => log(a + 10), 3);

 

Comments