Monad.Maybe
A monad that represents something or nothing.
The concept of having something vs. nothing is similar to having a value vs.
nil
.
Summary↑
bind(maybe, fun) | Callback implementation of |
none() | Returns a “nothing” state |
none?(maybe) | Macro that indicates if the maybe monad contains nothing |
pure(value) | An alias for |
return(value) | Callback implementation of |
some(value) | Wraps the value into a maybe monad |
some?(maybe) | Macro that indicates if the maybe monad contains something |
unwrap!(maybe) | Unwraps the value from a maybe monad |
Types ↑
maybe_type :: :some | :none
The possible types of values that can occur (i.e. something and nothing).
Functions
Specs:
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> n = bind m, (& some &1 * 2)
%Monad.Maybe{type: :some, value: 84}
iex> bind none, (& some &1 * 2)
none
Specs:
- pure(term) :: t
An alias for some/1
.
Specs:
- return(term) :: t
Callback implementation of Monad.Behaviour.return/1
.
Wraps the value in a maybe monad.
iex> return 42
%Monad.Maybe{type: :some, value: 42}
Specs:
- some(term) :: t
Wraps the value into a maybe monad.
iex> some 42
%Monad.Maybe{type: :some, value: 42}
Specs:
- unwrap!(t) :: term
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
Macros
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
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