평가(evaluation), 일급(first-class), 일급 / 고차함수란?

Jonghyeon·2021년 8월 15일
1
post-thumbnail

평가(evaluation)

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

1;
1 + 2;
(1 + 2) * 4;
[1, 2];
[1, 2 + 3];
[1, 2, [3, 4]];
[1, 2, ...[3, 4]];

일급(first-class)

  • 값으로 다룰 수 잇다.
  • 변수에 담을 수 있다.
  • 함수의 인자로 사용될 수 있다.
  • 함수의 결과로 사용될 수 있다.

일급 함수

  • 값으로 다룰 수 있다.
  • 조합성과 추상화의 도구
const a = 10;
const add10 = (a) => a + 10;
const r = add10(a);
console.log();

const add5 = (a) => a + 5;
console.log(add5);
console.log(add5(5));

const f1 = () => () => 1;
console.log(f1());

const f2 = f1();
console.log(f2);
console.log(f2());

고차 함수

함수를 값으로 다루는 함수

  1. 함수를 인자로 받아서 실행하는 함수
const apply1 = (f) => f(1);
const add2 = (a) => a + 2;
console.log(apply1(add2));
console.log(apply1((a) => a - 1));

const times = (f, n) => {
  let i = -1;
  while (++i < n) f(i);
};

times(console.log, 3);
times((a) => console.log(a + 10), 3);
  1. 함수를 만들어 리턴하는 함수 (클로저를 만들어 리턴하는 함수)
    아래의 코드에서 리턴되는 함수(클로저)는 a를 선언되어 있을 때 기억하고 있다.
const addMaker = (a) => (b) => a + b;
const add10 = addMaker(10);
console.log(add10(5));
console.log(add10(5));
profile
종현

0개의 댓글