코드는 html
<script></script>
에서 실습 했습니다.
솔직히 이해가...ㅠㅠ
ex) go 라는 함수 만들기.
//ex1)
go(
0,
a => a + 1,
a => a + 10,
a => a + 100,
log) //이러한 로직의 함수를 ex2)에 만들고 싶다. 결과)111
//ex2)
const go = (...args) => reduce((a, f) =>f(a), args)// args를 하나로 만들기 때문에 reduce 사용
go(
0,
a => a + 1,
a => a + 10,
a => a + 100,
log)
const go = (...args) => reduce((a, f) =>f(a), args)// args를 하나로 만들기 때문에 reduce
const pipe = (f, ...fs) => (...as) => go(f(...as), ...fs)
go(
add(0, 1)
a => a + 1,
a => a + 10,
a => a + 100,
log) // args를 하나로 만들기 때문에 reduce
const f = pipe(
(a, b) => a + b;
a => a + 10,
a => a + 100,
)
log(f(0, 1))
//ex1)
log(
reduce(
add,
map(p => p.price,
filter(p => p.price<20000, products))))
//ex2)
//ex1의 함수를 go 함수를 이용해서 좋은 코드로 만들어 봅시다.
go(
products,
products => filter(p => p.price < 20000, products), //필터를 걸어주고
products => map(p => p.price, products), //map 으로 뽑고
prices => reduce(add, prices), // reduce 로 하나를 만들어
log) // 출력한다.
//ex1
const curry = f =>
(a, ...) => .length ? f(a, ...) : (...) => f(a, )
//ex2
go(
products,
products => filter(p => p.price < 20000, products), //필터를 걸어주고
products => map(p => p.price, products), //map 으로 뽑고
prices => reduce(add, prices), // reduce 로 하나를 만들어
log) // 출력한다.
//curry 함수를 이용하면 코드가 훨씬 간결해진다. *(map, filter, reduce 함수에 curry 함수를 걸어줘야 한다.)
go(
products,
filter(p => p.price<2000),
map(p => p.price),
reduce(add),
log)