List.replace_at/3

defmodule List do
  def replace_at(list, index, value)
end

Returns a list with a replaced value at the specified index.

Negative indices indicate an offset from the end of the list.

If index is out of bounds, the original list is returned.