기능 프로그래밍에서 모나드 변압기는 모나드를 인수로 삼고 결과적으로 모나드를 반환하는 형식 생성자다.
모나드 변압기를 사용하여 상태, 예외 처리 및 I/O와 같은 모나드에 의해 캡슐화된 형상을 모듈식으로 구성할 수 있다.일반적으로 모나드 변압기는 기존 모나드를 일반화하여 생성되며, 결과 모나드 변압기를 아이덴티티 모나드에 적용하면 원래의 모나드와 동등한 모나드가 발생한다(필요한 복싱 및 언박스).
정의
모나드 변압기는 다음과 같이 구성된다.
- 유형 생성자
t같은 종류의 (* -> *) -> * -> * - 모나드 작전
return그리고bind(또는 등가 제형) 모두를 위한t m어디에m모나드 법칙을 만족시키는 모나드다. - 추가 수술,
lift :: m a -> t m a, 다음 법칙을 만족한다:[1] (기호)`bind`아래는 infix 응용 프로그램을 나타낸다. lift . return = return lift (m `bind` k) = (lift m) `bind` (lift . k)
예
옵션 모나드 변압기
모나드 {\,
옵션 모나드 변압기 M(?)
서 A A은(는) 옵션 유형을 나타냄
)는 다음과 같이 정의된다.

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

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

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

작가 모나드 변압기
모나드 {이
가) 주어진 경우, 작성기 모나드 M A) A
W는 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\왼쪽(
최종 상태와 선택적 반환 값을 산출하는 계산).
참고 항목
참조
외부 링크
![[icon]](//upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png) | 이 구간은 확장이 필요하다.덧셈으로 도움도 된다. (2008년 5월) |