Module do_monad

The Monad Type Class.

This module defines the do_monad behaviour.
Required callback functions: bind/2, do/2, then/2, lift/1, liftm/2.

Description

The Monad Type Class.

Data Types

either()

either(A, B) = {error, A} | {ok, B}

fn()

fn(A) = fun(() -> A)

fn()

fn(A, B) = fun((A) -> B)

maybe()

maybe(A) = {just, A} | nothing

monad()

monad(A) = [A] | either(term(), A) | maybe(A)

Function Index

do/2
lift/2
liftm/2
liftmz/2
then/2

Function Details

do/2

do(Monad::monad(A), Fs::[fn(A, monad(B)) | fn(monad(B))]) -> monad(B)

lift/2

lift(F::fn(A, B), Mod::atom()) -> fn(monad(A), monad(B))

liftm/2

liftm(F::function(), Monads::[monad(term())]) -> monad(term())

liftmz/2

liftmz(F::function(), Ts::[fn(monad(term()))]) -> monad(term())

then/2

then(Monad::monad(term()), F::fn(monad(A))) -> monad(A)


Generated by EDoc