modifiedReduce(
[Promise.resolve(1), Promise.resolve(2)],
lazyFilter(a => a % 2),
take(2),
log
)

modifiedReduce(
[1,2,3,4,5,6],
reduce(add),
log
);



reduce함수에 head함수가 추가된 상태에서 아래 표현식 평가
modifiedReduce(
[1,2,3,4,5],
take(2),
log
);


// const delay1000 = a => new Promise(resolve => setTimeout(() => resolve(a), 500));
console.time('');
modifiedReduce(
[1, 2, 3, 4, 5],
lazyMap((a) => delay1000(a * a)),
lazyFilter((a) => a % 2),
concurReduce(add),
log, // hi가 동시에 줄력된다.
(_) => console.timeEnd('')
); // 걸리는 시간 1.014초


