티스토리 뷰
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 |
공지사항
최근에 올라온 글