티스토리 뷰

활동/Dev Course TIL

03.28.2022 TIL

geonwoopaeng@gmail.com 2022. 3. 28. 21:26

TIL

Done it

  • 함수형 프로그래밍

go : 즉시 평가하는 함수

  const go = (...args) => reduce((a, f) => f(a), args);

  ex)
  go(
      0,
      a => a + 1,
      a => a + 10,
      a => console.log(a)); //11

args: 인자들, a: 인자

 

pipe : 합성된 함수를 만드는 함수(함수를 return)

  //인자 1개
  const pipe = (...fs) => (a) => go(a, ...fs);

  ex)
  const a = pipe(
      a => a + 1,
      a => a + 10,
      a => console.log(a));

  a(0);//11


  //인자 여러개
  const pipe = (f, ...fs) => (...as) => go(f(...as), ...fs);

  ex)
  const a = pipe(
      (a,b) => a + b,
      a => a + 10,
      a => console.log(a));

  a(0,1);//11

 

curry: 함수를 값으로 다루면서 받아둔 함수를 원하는 시점에 평가시키는 함수

=> 함수에 필요한 인자가 여러개인 경우지만 현재 1개의 인자만 받아온 상태이면 나머지 인자를 모두 받을 때 까지 실행하지 않고 기다린다.

  const curry = f =>
      (a, ..._) =>
      _.length ? f(a, ..._) : (..._) => f(a, ..._);


  ex) 
  //1. 각 filter, map함수에 curry를 씌어 준다.

  //2.
  go(
      products,
      products => filter(p => p.price < 1000)(products),
      products => map(p=>p.price)(products),
      products => console.log(products));

  //3.
  go(
      products,
      filter(p => p.price < 1000),
      map(p=>p.price),
      console.log);

 

take: 많은 값을 받아 잘라주는 함수

  const take = (limit, iter) => {
      let res = [];

      for (const i of iter) {
          res.push(i);
          if (limit == res.length) return res;
      }
      return res;
  }

*추가

  • 배열과 generator와의 차이는 배열은 값을 다 만들어 메모리상에 올려 놓지만 generator은 실행 될 때 값을 만들어 메모리 상에 올려 더 효율적입니다.

 

Feeling

함수형 프로그래밍은 인프런에서 미리 들어서 그런지 훨씬 이해도 잘가고 진도나가기 쉬운 것 같습니다. 그런데 목이 좀 아프다... + 머리 안개.... 제길 병이 없었으면 좋겠다. ㅋㅋㅋㅋ

알고리즘을 푸는데 자료구조를 많이 사용하지 않고 푸는것 같습니다. 그래서 엄청 복잡하게 나옵니다.;;;; 시간도 오래걸리고 해서 자료구조 Stack, queue 등을 잘 생각하면서 풀어야 겠습니다.

이젠 곧 리뷰를 해줘야 하는데 무엇을 리뷰해줘야 할지 살짝 막막합니다.

 

REF

https://programmers.co.kr/learn/courses/30/lessons/43162

https://programmers.co.kr/learn/courses/30/lessons/12952

https://programmers.co.kr/learn/courses/30/lessons/42883

https://caileb.tistory.com/197

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/yield

반응형

'활동 > Dev Course TIL' 카테고리의 다른 글

03.30.2022 TIL  (0) 2022.03.30
03.29.2022 TIL  (0) 2022.03.29
03.26.2022 TIL  (0) 2022.03.26
03.25.2022 TIL  (0) 2022.03.25
03.24.2022 TIL  (0) 2022.03.24
공지사항
최근에 올라온 글