Defining operations using protocols

Please use triple backtick blocks to format code: Markdown cheat sheet.

And no, Erlang and Elixir do not allow overriding of operators per se. You are much better off using function names like add, sub, mul, div, mod etc.