Monad overview
The Monad
type class combines the operations of the Chain
and Applicative
type classes. Therefore, Monad
instances represent type constructors which support sequential composition, and also lifting of functions of arbitrary arity.
Instances must satisfy the following laws in addition to the Applicative
and Chain
laws:
- Left identity:
M.chain(M.of(a), f) <-> f(a)
- Right identity:
M.chain(fa, M.of) <-> fa
Note. Functor
’s map
can be derived: A.map = (fa, f) => A.chain(fa, a => A.of(f(a)))
Added in v2.0.0
Table of contents
model
Monad (interface)
Signature
export interface Monad<F> extends Applicative<F>, Chain<F> {}
Added in v2.0.0
Monad1 (interface)
Signature
export interface Monad1<F extends URIS> extends Applicative1<F>, Chain1<F> {}
Added in v2.0.0
Monad2 (interface)
Signature
export interface Monad2<M extends URIS2> extends Applicative2<M>, Chain2<M> {}
Added in v2.0.0
Monad2C (interface)
Signature
export interface Monad2C<M extends URIS2, L> extends Applicative2C<M, L>, Chain2C<M, L> {}
Added in v2.0.0
Monad3 (interface)
Signature
export interface Monad3<M extends URIS3> extends Applicative3<M>, Chain3<M> {}
Added in v2.0.0
Monad3C (interface)
Signature
export interface Monad3C<M extends URIS3, E> extends Applicative3C<M, E>, Chain3C<M, E> {}
Added in v2.2.0
Monad4 (interface)
Signature
export interface Monad4<M extends URIS4> extends Applicative4<M>, Chain4<M> {}
Added in v2.0.0