defmodule MyList do def max([]), do: nil def max([head | tail]), do: findmax(head, head, tail) defp findmax(current, _next, [head | tail]) do if head > current, do: findmax(head, current, tail), else: findmax(current, current, tail) end defp findmax(current, next, []) do if current > next, do: current, else: next end end