Monad transformer

1

In functional programming, a monad transformer is a type constructor which takes a monad as an argument and returns a monad as a result. Monad transformers can be used to compose features encapsulated by monads – such as state, exception handling, and I/O – in a modular way. Typically, a monad transformer is created by generalising an existing monad; applying the resulting monad transformer to the identity monad yields a monad which is equivalent to the original monad (ignoring any necessary boxing and unboxing).

Definition

A monad transformer consists of:

Examples

The option monad transformer

Given any monad, the option monad transformer (where A^{?} denotes the option type) is defined by:

The exception monad transformer

Given any monad, the exception monad transformer (where E is the type of exceptions) is defined by:

The reader monad transformer

Given any monad, the reader monad transformer (where E is the environment type) is defined by:

The state monad transformer

Given any monad, the state monad transformer (where S is the state type) is defined by:

The writer monad transformer

Given any monad, the writer monad transformer (where W is endowed with a monoid operation ∗ with identity element \varepsilon) is defined by:

The continuation monad transformer

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. It is defined by: Note that monad transformations are usually not commutative: for instance, applying the state transformer to the option monad yields a type (a computation which may fail and yield no final state), whereas the converse transformation has type (a computation which yields a final state and an optional return value).

This article is derived from Wikipedia and licensed under CC BY-SA 4.0. View the original article.

Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc.
Bliptext is not affiliated with or endorsed by Wikipedia or the Wikimedia Foundation.

Edit article