본문 바로가기

Web/유인동 함수형 프로그래밍 스터디

함수형 프로그래밍 시작하기

★기본개념

### 평가란, 코드가 계산되어 값을 만드는 것을 말한다. 

###일급이란, 값으로 다룰 수 있고, 변수에 담을 수 있고 함수의 인자로 사용될 수 있고, 함수의 결과 값으로 사용될 수 있다.

###일급함수란, 함수를 값으로 다룰 수 있다. 변수에 담을 수 있고, 함수를 인자로 넘길 수 있고, 함수를 리턴값으로 넘길 수 있다. ( => 클로저를 리턴한다. )

###고차함수란, 함수를 값으로 다루는 함수


고차함수 예시1

apply_1함수는 함수를 인수로 받아서 그 함수에 1을 인자로 넘겨준다.

add_2는 받은 인자에 2를 더해주는함수이다.

const apply_1 = f => f(1);
const add_2 = a => a+2;

apply1(add2); // => apply_1((1) => 1+2) 3리턴

 

고차함수 예시2

함수와 특정 값을 인자로 받고, 내부적으로 함수를 실행시켜 인자를 적용시키는 함수 => 어플리케이티브 함수라고도 한다.

const repeater = (f, count) => {
	let counter = -1;
    while(++counter < count){
    	f(counter);
    }	
} 

repeater((n) => console.log(n,'째 반복'),3);

 

고차함수 예시3 

함수를 만들어주는 함수 ( = 클로저를 만들어 리턴한다. )

addMaker라는 함수는, 인수 a를 받고 입력하는 값에 a를 더해서 리턴해주는 함수를 반환해준다.

add7함수( a===7이라는 데이터를 기억하는 클로저 )는 addMaker에 7을 인수로 넘기고 리턴받는 함수를 저장한 함수다.

add7함수에 b를 넣으면, 7 + b를 해서 반환한다.

const addMaker = a => b => a + b;
const add7 = addMaker(7);
add7(3); //10출력