1.Functor
함수형 프로그래밍에서 값을 감싸는 컨테이너이며, 이 컨테이너 내부의 값을 함수를 사용해 변환할 수 있도록 하는 개념
(리스트(List), 옵셔널(Optional), 스트림(Stream)등 이있다.)
이 컨테이너 내부에 있는 값은 map 메서드를 통해 변환할 수있다.
2.Functor 특징
- Functor는 내부 값에 함수를 적용하고, 결과를 새로운 Functor로 반환한다.
- Functor의 내부 값은 변환되지만, 컨테이너의 구조는 그대로 유지된다.
- 동일성 법칙 (Identity Law): F.map(x -> x)는 F와 동일해야함
- 합성 법칙 (Composition Law): F.map(f).map(g)는 F.map(x -> g(f(x)))와 동일해야함
3.Java 예시
Optional은 값이 있을 수도 있고 없을 수도 있는 컨테이너로 내부 값에 변환 함수를 적용할 수 있으며, map 메서드를 사용한다.
import java.util.Optional;
public class FunctorExample {
public static void main(String[] args) {
//Functor
Optional<Integer> maybeValue = Optional.of(10);
Optional<Integer> transformed = maybeValue.map(x -> x * 2);
// 값이 없는 Optional에도 안전하게 처리 가능
Optional<Integer> emptyValue = Optional.empty();
Optional<Integer> result = emptyValue.map(x -> x * 2);
}
}
'Computer Science > 개발지식' 카테고리의 다른 글
[개발지식] Monad (0) | 2025.01.05 |
---|---|
[개발지식] 트레이드오프(Trade-off)란? (0) | 2024.12.27 |
[개발지식] Seed(시드)란 뭘까? (3) | 2024.12.25 |