Use defdelegate to define functions that delegate to functions of the same name defined in another module:

defmodule Math do
  defdelegate pi, to: :math
end
iex> Math.pi
3.141592653589793

Another example - protocols with default implementation:

defmodule ReversableString do
    # ...

    def reverse(s) do
        # Implementation omitted
    end

    # ...
end
defimpl Reversable, for: ReversableString do
  defdelegate reverse(self), to: ReversableString
end

Read more.