We currently use Elixir 1.7 and have the follow macro defined to simplify logic in with-do
blocks:
defmacro ensure(condition, [fail: error]) do
quote do
:ok <- if unquote(condition), do: :ok, else: unquote(error)
end
end
Usage is something like this:
with ensure(check_condition?(x), fail: {:error, :bad_condition}),
do: :ok
In Elixir 1.8 and above, this macro no longer compiles. I get an error undefined function <-/2
. Is there any way to define this macro such that it works with the current compiler? Or something similar I could do instead? We really like this syntactic sugar for with-do
blocks.