[개발지식] Monad

2025. 1. 5. 13:11· Computer Science/개발지식
목차
  1. 1.Monad?
  2. 2.map vs flatmap
728x90


1.Monad?

함수형 프로그래밍에서 중요한 개념으로 특정한 형식의 연산을 순차적으로 처리할 수 있도록 해주는 추상화다.
값을 컨텍스트 안에서 감싸고, 이를 안전하게 연산하며, 연속적으로 처리할 수 있게 하는 도구라고 볼수있다.
(Functor의 확장된 개념으로, 값의 변환뿐 아니라 연산의 체이닝을 가능하게한다.
Functor처럼 map 연산을 제공할 뿐만 아니라, flatMap을 통해 중첩된 구조를 평평하게 만든다.)

 

 

import java.util.Optional;

public class MonadOptionalExample {
    public static void main(String[] args) {
        // Monad 생성
        Optional<Integer> maybeValue = Optional.of(10);

        // flatMap을 사용한 체이닝
        Optional<String> result = maybeValue
            .flatMap(value -> Optional.of(value * 2)) // 값을 2배로 변환
            .flatMap(value -> Optional.of("Result: " + value)); // 문자열로 변환

        System.out.println(result); // Optional[Result: 20]
    }
}

 

 

 

2.map vs flatmap

map은 값을 변환하는 연산으로, 값을 다른 값으로 매핑하고 중첩된 구조가 생기지않는다.
flatmap은 값을 변환한 후, 그 결과를 평평하게 만든다.
public class FlatMapAndMapExample {
    public static void main(String[] args) {
        // Optional을 사용하여 중첩된 값 처리
        Optional<Integer> result = Optional.of(10)
            .flatMap(value -> Optional.of(value * 2))  // flatMap: 중첩된 Optional을 풀어냄
            .map(value -> value + 5);  // map: 값에 5를 더함

        result.ifPresent(System.out::println);  // 출력: 25
    }
}

 

 

 

728x90

'Computer Science > 개발지식' 카테고리의 다른 글

[개발지식]함수형 프로그래밍 (Functional Programming, FP)  (0) 2025.01.05
[개발지식] Functor  (0) 2025.01.05
[개발지식] 트레이드오프(Trade-off)란?  (0) 2024.12.27
  1. 1.Monad?
  2. 2.map vs flatmap
'Computer Science/개발지식' 카테고리의 다른 글
  • [개발지식] 콜백 함수 (Callback Function)
  • [개발지식]함수형 프로그래밍 (Functional Programming, FP)
  • [개발지식] Functor
  • [개발지식] 트레이드오프(Trade-off)란?
아사_
아사_
프로그래밍 공부한거 정리해두는 메모장 블로그
아사_
개발공부 블로그
아사_
전체
오늘
어제
  • 분류 전체보기
    • FrontEnd
      • html
      • css
      • JavaScript
      • Node.js
      • React
      • React Native
    • BackEnd
      • SpringBoot
      • FastAPI
      • PHP
      • Flask
      • supabase
    • Language
      • Python
      • JAVA
      • Kotlin
      • C++
    • Development Tools
      • AWS
      • GIT,GITHUB
      • Docker
      • 메시지 브로커
      • 기타 도구,플랫폼
    • Computer Science
      • 개발지식
      • Server&Network
      • Algorithm&DataStructure
      • Security
      • DataBase
      • OS
    • AI
    • 기타
      • 잡다
      • Android
      • 도서
    • 클론코딩
      • 생활코딩 Express.js
      • 점프 투 장고
      • 생활코딩 Node.js
    • 프로젝트
      • DevQuest

인기 글

최근 글

250x250
hELLO · Designed By 정상우.v4.2.2
아사_
[개발지식] Monad
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.