함수형 프로그래밍의 간단 핵심

nyongho·2021년 5월 22일
0

오늘 배운 내용

목록 보기
21/40

1) 함수형 프로그래밍은 선언형이다.

명령형 프로그래밍은 어떻게 할 것인가(How)를 표현하고, 선언형 프로그래밍은 무엇을 할 것인가(What)를 표현한다.

1-2. 함수형 프로그래밍의 기본 규칙

  • 모든 데이터는 변경이 불가능 해야한다.
  • 함수는 순수 함수로 만든다. 인자를 적어도 하나 이상 받게 만들고, 데이터나 다른 함수를 반환해야 한다.
  • 루프보다는 재귀를 사용한다.

1-3. 순수함수란?

동일한 입력에는 항상 같은 값을 반환하는 함수

함수 내부에서 인자의 값을 변경하거나 프로그램 상태를 변경하는 것, 즉 Side Effect 가 없는 함수를 순수함수라고 한다.


2) 함수 또한 값이다.

// 이렇게 생긴 함수를
function example (num) {
  return console.log(num)
}

// 값(변수)으로 할당하는 모습
const example = function (num) {
  return console.log(num)  
}

// ES6 부터는 화살표 함수를 통해 간결하게 함수를 값으로 할당할 수 있다.
const example = (num) => {
  return console.log(num)
}

3) 고차함수

인자로 다른 함수를 받아 결과값을 보내는 함수

const calculator = (num1, num2, op) => op(num1, num2);

const add = (num1, num2) => num1 + num2;
const multiply = (num1, num2) => num1 * num2;
const power = (num1, num2) => Math.pow(num2, num1);

calculator(1, 2, add); // 3
calculator(1, 2, multiply) // 2
calculator(1, 2, power) // 2

4) 커링

인자를 여러개 받는 함수를 분리하여, 인자를 하나씩만 받는 함수의 체인으로 만드는 방법


// ES5 에서의 커링
function calculator2 (op) {
  return function (num) {
   return op(2, num) 
  }
}

// ES6 에서의 커링 (더 간결하게 작성이 가능)
const calculator2 = (op) => (num) => op(2, num);

const add = (num1, num2) => num1 + num2;
const multiply = (num1, num2) => num1 * num2;

const add2 = calculator2(add);
const multiply2 = calculator2(multiply)

add2(3) // 5
multiply2(3) // 6
profile
두 줄 소개

0개의 댓글