[javascript] 함수형 프로그래밍 기본기 다지기

김효진·2021년 8월 6일
0
post-thumbnail

함수형 프로그래밍과 JavaScript ES6+ 강의를 듣고 정리한 내용입니다.

편의상 코드 상단에 console.log를 log 변수에 담는 코드 한줄을 작성합니다.

<script> const log = console.log; </script>

평가

  • 코드가 계산(Evaluation) 되어 값을 만드는 것

일급

  • 값으로 다룰 수 있다.
  • 변수에 담을 수 있다. const a = 10
  • 함수의 인자로 사용될 수 있다. const add10 = (a) => a + 10
  • 함수의 결과로 사용될 수 있다. const r = add10(a)

일급 함수

  • 함수를 값으로 다룰 수 있다.
    • 자바스크립트는 일급이다.
  • 조합성과 추상화의 도구
    • 자바스크립트가 일급이라는 것은 자바스크립트를 조합성과 추상화의 도구로 잘 사용할 수 있다는 것이다.
  const add5 = (a) => a + 5;
  log(add5);
  log(add5(5));

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

  constf2= f1();
  log(f2);
  log(f2());

고차 함수

함수를 값으로 다루는 함수

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

  • apply1
  const apply1 = f => f(1); // 함수를 인자로 받아서 실행하는 함수
  const add2 = a => a + 2;
  log(apply1(add2)); // 3
  log(apply1(a => a - 1)); // 0
  • times
  const times = (f, n) => {
    let i = -1;
    while(++i < n) f(i);
  };

  times(log, 3);
  // 0
  // 1
  // 2
  times(a =>log(a+ 10), 3);
  // 10
  // 11
  // 12

함수를 만들어 리턴하는 함수 (클로저를 만들어 리턴하는 함수)

  • addmaker
  const addMaker = a => b => a + b;
  constadd10= addMaker(10);
  log(add10); // b => a + b
  log(add10(5)) // 15
profile
맨땅에 헤딩 🐣

0개의 댓글