result v0.5.1 Result.Operators
A result operators.
Link to this section Summary
Functions
Chain together a sequence of computations that may fail
Return true
if result is error
Fold function returns tuple {:ok, [...]}
if all
tuples in list contain :ok
or {:error, ...}
if
only one tuple contains :error
Map function f
to value
stored in Ok result
Return true
if result is ok
Perform function f
on Ok result and return it
Flatten nested results
Return value
if result is ok, otherwise default
Link to this section Functions
Chain together a sequence of computations that may fail.
Examples
iex> val = {:ok, 1}
iex> Result.Operators.and_then(val, fn (x) -> {:ok, x + 1} end)
{:ok, 2}
iex> val = {:error, 1}
iex> Result.Operators.and_then(val, fn (x) -> {:ok, x + 1} end)
{:error, 1}
Return true
if result is error
Examples
iex> Result.Operators.error?({:error, 123})
true
iex> Result.Operators.error?({:ok, 123})
false
Fold function returns tuple {:ok, [...]}
if all
tuples in list contain :ok
or {:error, ...}
if
only one tuple contains :error
.
Examples
iex> val = [{:ok, 3}, {:ok, 5}, {:ok, 12}]
iex> Result.Operators.fold(val)
{:ok, [3, 5, 12]}
iex> val = [{:ok, 3}, {:error, 1}, {:ok, 2}, {:error, 2}]
iex> Result.Operators.fold(val)
{:error, 1}
Map function f
to value
stored in Ok result
Examples
iex> ok = {:ok, 3}
iex> Result.Operators.map(ok, fn(x) -> x + 10 end)
{:ok, 13}
iex> error = {:error, 3}
iex> Result.Operators.map(error, fn(x) -> x + 10 end)
{:error, 3}
Return true
if result is ok
Examples
iex> Result.Operators.ok?({:ok, 123})
true
iex> Result.Operators.ok?({:error, 123})
false
Perform function f
on Ok result and return it
Examples
iex> Result.Operators.perform({:ok, 123}, fn(x) -> x * 100 end)
{:ok, 123}
iex> Result.Operators.perform({:error, 123}, fn(x) -> IO.puts(x) end)
{:error, 123}
Flatten nested results
resolve :: Result x (Result x a) -> Result x a
Examples
iex> Result.Operators.resolve({:ok, {:ok, 1}})
{:ok, 1}
iex> Result.Operators.resolve({:ok, {:error, "one"}})
{:error, "one"}
iex> Result.Operators.resolve({:error, "two"})
{:error, "two"}
Return value
if result is ok, otherwise default
Examples
iex> Result.Operators.with_default({:ok, 123}, 456)
123
iex> Result.Operators.with_default({:error, 123}, 456)
456