Auxiliary Memory
  • Auxiliary Memory
  • Recent Changes
  • Disclaimer
  • general
    • Homelab
      • Planning
      • Configuring RPi
      • Dockerize Unifi Controller
      • Moving Unifi Controller to Bare Metal RPi
    • Lifehack
      • Coding on iPad
      • Faster internet with Cloudflare WARP
  • lifelog
    • Links
    • Movies
    • Books
      • Reading Queue
    • Public Memos
      • 2020 Memo
    • Yearly Records
      • Records of 2020
      • Records of 2019
  • books
    • The Rust Programming Language
    • Lambda Calculus
    • SICP
    • Introduction To Algorithms
      • 1.1. 알고리즘의 역할
      • 1.2. 시작하기
    • Linux System Programming 2/E
      • 1. 핵심 개념 소개
  • Programming
    • Git
    • When to refactoring?
    • Microservices
    • Functional Programming
      • ADT
      • Functor and Monads
    • OS
      • CPU Modes
    • Debugging
      • objdump
    • DevOps
      • How our infrastructure organized
      • Optimize Dockerfile
    • Spring Framework
    • Web
      • OAuth
        • Sign in with Apple
    • SQL
      • Prepared Statement
    • Programming Languages
      • TypeScript
      • Python
        • GIL
      • Rust
      • F#
        • Dos & Don'ts
      • Go
      • JVM
        • JVM memory structure
        • JVM GC
        • Kotilin
        • Java
          • Why main method should be static
  • My Environment
    • My Macbook
    • My Keyboards
    • My PyCharm
    • My CLI
      • iTerm2
      • Dotfiles
        • Refactoring .zshrc
      • Useful Commands
Powered by GitBook
On this page
  • Functor
  • Monads

Was this helpful?

  1. Programming
  2. Functional Programming

Functor and Monads

Functor

  • 감싸진 값에 함수를 적용하는 방법

  • Future, List, Maybe에 있는 map: 감싸져있는 값에 함수를 적용하게 해주는 펑터를 구현한 것

Monads

  • 감싸진 값을 리턴하는 함수에 감싸진 값을 밀어넣는 방법

    • 모나드가 되려면...

      • 타입 생성자가 있어야 한다

      • 모나드가 아닌 값을 받아 모나드를 리턴하는 함수에 모나드로 감싸진 값을 집어넣는 바인드를 지원해야 한다

      • 모나드로 다른 타입을 감싸는 것을 지원해야 한다.

    • 위 특성(타입클래스/인터페이스)들을 만족한다면 그것은 모나드다

  • ROP에서 T -> Result U 의 시그니처를 가지는 함수들을 Result T -> Result U 로 바꿔서 체이닝 해주는것도 모나드의 개념

    • Maybe(Optional) 같은 타입들도 모나드기 때문에 >>=처럼 바인드를 지원

PreviousADTNextOS

Last updated 5 years ago

Was this helpful?