일반 reduce의 경우 앞의 지연함수들의 요소 하나하나씩 순차대로 평가한다.
C.reduce의 경우 병렬적으로 출발 시킨 뒤 평가한다.
C.reduce = (f, acc, iter)=> iter ? reduce(f, acc, [...iter]) : reduce(f, [...acc]));
C.take = (l, iter) => take(l, [...iter])
C.map
C.filter