   """
   @spec first([elem]) :: nil | elem when elem: var
   def first([]),      do: nil
-  def first([h | _]), do: h
+  def first([head | _]), do: head
 
   @doc """
   Returns the last element in `list` or `nil` if `list` is empty.


  """
  @spec last([elem]) :: nil | elem when elem: var
  def last([]),      do: nil
  def last([h]),     do: h
  def last([_ | t]), do: last(t)

  @doc """
  Receives a list of tuples and returns the first tuple

    list
  end

  defp do_update_at([head | tail], index, fun) do
    [head | do_update_at(tail, index - 1, fun)]
  end

  defp do_update_at([], _index, _fun) do
