Current section
Files
Jump to
Current section
Files
lib/rational_math.ex
defprotocol RationalMath do
@moduledoc """
This protocol is responsible for extending math operators to work with rational numbers.
"""
def a + b
def a - b
def a * b
def a / b
def a ** b
def abs(a)
end
defimpl RationalMath, for: [Rational, Integer, Float] do
def a + b, do: Rational.op(a, b, :+)
def a - b, do: Rational.op(a, b, :-)
def a * b, do: Rational.op(a, b, :*)
def a / b, do: Rational.op(a, b, :/)
def a ** b, do: Rational.op(a, b, :**)
def abs(a), do: Rational.op(a, :abs)
end