   """
   @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.

    list
  end

  defp do_update_at([h | t], index, fun) do
    [h | do_update_at(t, index - 1, fun)]
  end

  defp do_update_at([], _index, _fun) do


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

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