모나드

개념

  • 값을 받아 한번 더 감싼 타입
  • 순서가 있는 연산을 처리하는데 사용하는 디자인 패턴
  • 순수 함수형 프로그래밍 언어에서 부작용을 제어하기 위해서 사용
    • 부작용: 함수가 결과값 이외에 다른 상태를 변경할 때 부작용이 있다고 말함
    • ex) 함수가 전역 변수, 정적 변수, 패러미터를 수정하거나 IO 작업을 수행
  • 자바스크립트같은 다중 패러다임 프로그래밍 언어에서 복잡도를 제어하기 위해서 사용함
  • 마치 Java의 Generic이랑 비슷한 개념
  • M[T] 로 표현 가능

type constructor

  • 특정 타입에 대한 모나드 생성자
  • ex) Maybe[Number]

unit function

  • 특정 타입의 값을 받아 그 값을 감싼 모나드를 반환
  • 하스켈에서는 return operator이라고도 부름
  • ex) Maybe(2) -> Maybe[Number]

bind function

  • 모나드 값을 바탕으로 operation을 연결

모나드 법칙

  • bind(unit(x), f) ≡ f(x)
  • bind(m, unit) ≡ m
    • 이 두 법칙은 unit이 neutral element이라는 것을 의미
  • bind(bind(m, f), g) ≡ bind(m, x ⇒ bind(f(x), g))
    • 이 법칙은 bind의 순서에 상관없이 결합 법칙을 만족시켜야 한다는 것을 보여줌
    • ex) 8 + ( 4 + 2 ) == ( 8 + 4 ) + 2

results matching ""

    No results matching ""