Functional Programming

fold 함수와 reduce 함수의 차이

flutter developer 2025. 2. 8. 18:17

fold 함수란?

 

 

 

 

reduce 함수란?

reduce 함수는 리스트(List)의 모든 요소를 하나의 값으로 축소(Aggregate)하는 함수이다. reduce의 동작방식은 fold와 다른점이 있는데 

 

 

 

 

자바, kotlin 같은 멀티스레딩 언어에서 Reduce 활용

https://medium.com/@mesfandiari77/parallel-stream-in-java-ac47c54176e0

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);

int sum = numbers.parallelStream().reduce(0, Integer::sum);
System.out.println(sum); // 36


Step 1:    (1+2)    (3+4)    (5+6)    (7+8)   // 4개의 스레드 실행
Step 2:     (3)      (7)      (11)    (15)  // 2개의 스레드 실행
Step 3:         (10)              (26)    // 1개의 스레드 실행
Step 4:                   (36)  // 최종 결과

parallelStream()을 사용하면 이진 트리(Binary Tree Reduction) 방식으로 자동 병렬 처리를 할 수 있다. 따라서 예제와 같이 처리한다면 시간복잡도는 O(log N) 으로 최적화가 된다. 

 

Dart 에서 Reduce 활용

Dart의 reduce는 순차적으로 실행되며, 단일 스레드에서 동작한다. 즉, Java/Kotlin의 parallelStream() 같은 병렬 실행 기능이 기본적으로 제공되지 않는다. 따라서 시간복잡도는 기본적으로 O(N)이다. 

 

Dart 에서 Reduce 와 Fold  선택 요령

 

 

 


도움주신 단톡방의 김노트님께 감사드립니다 :)