Witha v0.1.1 Witha.Error View Source
Either monad chain.
The typespec of either is {:ok, term} | {:error, term}.
iex> witha Witha.Error, x1 <- {:ok, 1}, do: x1 + 1
{:ok, 2}
iex> witha Witha.Error, x1 <- {:error, "駄目"}, do: x1
{:error, "駄目"}
:ok can chain.
iex> witha Witha.Error, [
iex> x1 <- {:ok, 1},
iex> x2 <- {:ok, x1 + 1},
iex> ], do: x1 + x2
{:ok, 3}
:error & raise stops the chain.
iex> witha Witha.Error, [
iex> x1 <- {:error, "駄目"},
iex> x2 <- {:ok, x1 + 1},
iex> ], do: x1 + x2
{:error, "駄目"}
iex> witha Witha.Error, [
iex> x1 <- raise("駄目"),
iex> x2 <- {:ok, x1 + 1},
iex> ], do: x1 + x2
{:error, %RuntimeError{message: "駄目"}}
Link to this section Summary
Functions
Callback implementation for c:Witha.Aspect.flat_map/2
Callback implementation for c:Witha.Aspect.handle_error/1
Callback implementation for c:Witha.Aspect.new/1
Link to this section Functions
Callback implementation for c:Witha.Aspect.flat_map/2.
Callback implementation for c:Witha.Aspect.handle_error/1.
Callback implementation for c:Witha.Aspect.new/1.