함수를 위에서 아래로 왼쪽에서 오른쪽으로 평가하면서 연속적으로 함수를 실행하고 이전에 실행된 함수의 결과를 다음함수에게 전달하는 go라는 함수를 만들었기 때문에 아래 코드의 표현을 바꿀 수가 있다.
const add = (a, b) => a + b;
log(
reduce(
add,
map(p => p.price,
filter(p => p.price < 20000, products))));
console.clear();
go를 이용해서 작성을 하면 products로 시작을 하고 products를 받아서 filter를 하겠다라고 작성을 하고 products를 받아서 map을 하겠다라고 작성을 할 수가 있다.
<script>
go(
products,
products => filter(p => p.price < 20000, products),
products => map(p => p.price, products),
)
</script>
위 코드에서 reduce를 이용해서 log를 찍어보면 결과가 잘 나오게 된다. 처음코드보다 양은 좀 많아졌고 간결하지는 않지만 읽을 때 편해졌다.
products로 시작해서 filter를 하고 그 값을 map을 해서 가격들만 뽑고 뽑은 값을 reduce로 모두 add로 축약해서 그 값을 log로 출력하겠다해서 위에서부터 아래로 읽을 수 있게 표현이 되었다.
<script>
go(
products,
products => filter(p => p.price < 20000, products),
products => map(p => p.price, products),
prices => reduce(add, prices),
log);
</script>
<출처 : 유인동 함수형 프로그래밍과 JavaScript ES6+>
https://www.inflearn.com/course/functional-es6/dashboard
함수형 프로그래밍과 JavaScript ES6+ - 인프런 | 강의
ES6+와 함수형 프로그래밍을 배울 수 있는 강의입니다. 이 강좌에서는 ES6+의 이터러블/이터레이터/제너레이터 프로토콜을 상세히 다루고 응용합니다. 이터러블을 기반으로한 함수형 프로그래밍,
www.inflearn.com
'JavaScript > 함수형 프로그래밍과 JavaScript ES6+' 카테고리의 다른 글
함수 조합으로 함수 만들기 (0) | 2021.08.19 |
---|---|
go + curry를 사용하여 더 읽기 좋은 코드로 만들기 (0) | 2021.08.19 |
코드를 값으로 다루어 표현력 높이기(pipe) (0) | 2021.08.19 |
코드를 값으로 다루어 표현력 높이기(go) (0) | 2021.08.19 |
map+filter+reduce 중첩 사용과 함수형 사고 (0) | 2021.08.18 |