MonadEx v1.1.3 Monad.Maybe View Source
A monad that represents something or nothing.
The concept of having something vs. nothing is similar to having a value vs.
nil
.
Link to this section Summary
Functions
Callback implementation of Monad.Behaviour.bind/2
Returns a “nothing” state
Macro that indicates if the maybe monad contains nothing
An alias for some/1
Callback implementation of Monad.Behaviour.return/1
Wraps the value into a maybe monad
Macro that indicates if the maybe monad contains something
Unwraps the value from a maybe monad
Link to this section Types
The possible types of values that can occur (i.e. something and nothing).
Link to this section Functions
Callback implementation of Monad.Behaviour.bind/2
.
If the monad contains a value, then the value is unwrapped and applied to
fun
.
For none
monads, none
is returned without evaluating fun
.
iex> m = some 42
iex> bind m, (& some &1 * 2)
%Monad.Maybe{type: :some, value: 84}
iex> bind none(), (& some &1 * 2)
%Monad.Maybe{type: :none, value: nil}
Returns a “nothing” state.
Macro that indicates if the maybe monad contains nothing.
This macro may be used in guard clauses.
iex> none? none()
true
iex> none? some 42
false
An alias for some/1
.
Callback implementation of Monad.Behaviour.return/1
.
Wraps the value in a maybe monad.
iex> return 42
%Monad.Maybe{type: :some, value: 42}
Wraps the value into a maybe monad.
iex> some 42
%Monad.Maybe{type: :some, value: 42}
Macro that indicates if the maybe monad contains something.
This macro may be used in guard clauses.
iex> some? none()
false
iex> some? some 42
true
Unwraps the value from a maybe monad.
Does not work with none
values, since they contain nothing.
iex> m = some 42
iex> unwrap! m
42