파트6. 장바구니 예제 - ChoDragon9/posts GitHub Wiki
가격과 수량을 총합을 가져오는 함수를 예로 중복코드를 제거하는 예제입니다.
const totalPrice = pipe(
map(p => p.price * p.quantity),
reduce((a, b) => a + b)
);
const totalQuantity = pipe(
map(p => p.quantity),
reduce((a, b) => a + b)
);
합계를 계산하는 부분을 함수로 만들수 있습니다.
const sum = (mapper, iterable) => go(
iterable,
map(mapper),
reduce((a, b) => a + b)
);
const totalPrice = product => sum(p => p.price * p.quantity, product);
const totalQuantity = product => sum(p => p.quantity, product);
커링을 사용하면 인자를 더욱 줄일 수 있습니다.
const sum = curry((mapper, iterable) => go(
iterable,
map(mapper),
reduce((a, b) => a + b)
));
const totalPrice = sum(p => p.price * p.quantity);
const totalQuantity = sum(p => p.quantity);