Skip to content

Instantly share code, notes, and snippets.

@Overbryd
Last active August 11, 2017 09:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Overbryd/d1338ad283ddc9bc6967a3c55d86ecac to your computer and use it in GitHub Desktop.
Save Overbryd/d1338ad283ddc9bc6967a3c55d86ecac to your computer and use it in GitHub Desktop.
defmodule Decimal.Prefix do
defmacro __using__(_args) do
quote do
import Decimal.Prefix, only: [decimal: 1]
end
end
def overrides, do: ["+": 2, "-": 2, "*": 2, "/": 2]
defmacro a + b do
quote do: Decimal.add(unquote(a), unquote(b))
end
defmacro a - b do
quote do: Decimal.add(unquote(a), unquote(b))
end
defmacro a * b do
quote do: Decimal.mult(unquote(a), unquote(b))
end
defmacro a / b do
quote do: Decimal.div(unquote(a), unquote(b))
end
defmacro decimal(code) do
enclosed do
quote do
import Kernel, except: unquote(Decimal.Prefix.overrides())
import Decimal.Prefix
unquote(code)
end
end
end
defp enclosed(do: code), do: code
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment