본문 바로가기

Common/Javascript

함수형 프로그래밍 - (1) 평가, 일급, 일급 함수, 고차 함수

1.  평가

 

코드가 평가되어 값을 만드는 것

// true
console.log([1, 1 + 2 + 3] === [1, 5]);

 

2.  일급

(1) 값으로 다룰 수 있다. (평가)

 

(2) 변수에 담을 수 있다.

const a = 10;

// 10
console.log(a);

 

(3) 함수의 인자로 사용될 수 있다.

const a = 1;
const b = 2;
const add = (a, b) => a + b;

// 3
console.log(add(a, b));

 

(4) 함수의 결과로 사용될 수 있다.

const a = 1;
const b = 2;
const add = (a, b) => a + b;
const c = add(2, 3);

// 5
console.log(c);

 

 

3.  일급 함수

 

(1) 함수를 으로 다룰 수 있다.

(2) 조합성과 추상화의 도구

const add5 = (a) => a + 5;

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

// 10
console.log(add5(5));


const f1 = () => () => 1;

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

// 1
console.log(f1()());

 

4.  고차 함수

함수를 값으로 다루는 함수

 

 

(1) 함수를 인자로 받아서 실행하는 함수

const apply1 = (f) => f(1);
const add2 = (a) => a + 2;

// 3
log(apply1(add2));

// 0
log(apply1((a) => a - 1));

 

(2) 함수를 만들어 리턴하는 함수

const addMaker = (a) => (b) => a + b;
const add20 = addMaker(20);

// 25
console.log(add20(5));

// 30
console.log(addMaker(10)(20));