모나드 변압기

Monad transformer

기능 프로그래밍에서 모나드 변압기모나드를 인수로 삼고 결과적으로 모나드를 반환하는 형식 생성자다.

모나드 변압기를 사용하여 상태, 예외 처리 및 I/O와 같은 모나드에 의해 캡슐화된 형상을 모듈식으로 구성할 수 있다.일반적으로 모나드 변압기는 기존 모나드를 일반화하여 생성되며, 결과 모나드 변압기를 아이덴티티 모나드에 적용하면 원래의 모나드와 동등한 모나드가 발생한다(필요한 복싱 및 언박스).

정의

모나드 변압기는 다음과 같이 구성된다.

  1. 유형 생성자t같은 종류의 (* -> *) -> * -> *
  2. 모나드 작전return그리고bind(또는 등가 제형) 모두를 위한t m어디에m모나드 법칙을 만족시키는 모나드다.
  3. 추가 수술,lift :: m a -> t m a, 다음 법칙을 만족한다:[1] (기호)`bind`아래는 infix 응용 프로그램을 나타낸다.
    1. lift . return = return
    2. lift (m `bind` k) = (lift m) `bind` (lift . k)

옵션 모나드 변압기

모나드 {\,옵션 모나드 변압기 M(?) 서 A A(는) 옵션 유형을 나타냄)는 다음과 같이 정의된다.

예외 모나드 변압기

모든 A{\\,이(가) 주어진 경우 예외 모나드 M + ) 여기서 E는 예외의 유형임)은 다음과 같이 정의된다.

판독기 모나드 변압기

모든 모나드 이(가) 주어진 경우, 판독기 모나드 → MA {\ EA}(여기서 E는 환경 유형)는 다음과 같이 정의된다.

주 모나드 변압기

모든 A{\\,가) 주어진 경우 상태 모나드 S → (× ){\여기서 S는 상태 유형)으로 정의된다.

작가 모나드 변압기

모나드 {가) 주어진 경우, 작성기 모나드 M A) AW는 ID 요소가 }인 단일 연산 으로 정의된다.

연속 모나드 변압기

Given any monad , the continuation monad transformer maps an arbitrary type R into functions of type , where R is the result type of the continuation.이 값은 다음과 같이 정의된다.

일반적으로 모나드 변환은 상통적이지 않다는 점에 유의하십시오. 예를 들어, 모나드 옵션에 상태 변압기를적용하면 (A ) ? 하여 최종 상태를 산출하지 않을 수 있는 연산), 역 변환에는 S →( ? S\왼쪽(최종 상태와 선택적 반환 값을 산출하는 계산).

참고 항목

참조

  1. ^ Liang, Sheng; Hudak, Paul; Jones, Mark (1995). "Monad transformers and modular interpreters" (PDF). Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages. New York, NY: ACM. pp. 333–343. doi:10.1145/199448.199528.

외부 링크