Current section
Files
Jump to
Current section
Files
lib/bool_alg/macros.ex
defmodule BoolAlg.Macros do
defmacro deftrue(operation, result, result2 \\ nil) do
result2 = result2 || result
quote do
defp reduce(%__MODULE__{op: unquote(operation), x: true, y: var!(q)}), do: unquote(result)
defp reduce(%__MODULE__{op: unquote(operation), x: var!(q), y: true}), do: unquote(result2)
end
end
defmacro deffalse(operation, result, result2 \\ nil) do
result2 = result2 || result
quote do
defp reduce(%__MODULE__{op: unquote(operation), x: false, y: var!(q)}), do: unquote(result)
defp reduce(%__MODULE__{op: unquote(operation), x: var!(q), y: false}), do: unquote(result2)
end
end
end