       [a: 3, b: 4, c: 5]
 
   """
-  @spec with_index(t) :: [{element, integer}]
-  @spec with_index(t, integer) :: [{element, integer}]
+  @spec with_index(t) :: [{element, index}]
+  @spec with_index(t, integer) :: [{element, index}]
   def with_index(enumerable, offset \\ 0) do
     map_reduce(enumerable, offset, fn x, acc ->
       {{x, acc}, acc + 1}

      :none

  """
  @spec at(t, integer, default) :: element | default
  def at(enumerable, index, default \\ nil) do
    case fetch(enumerable, index) do
      {:ok, h} -> h

      :error

  """
  @spec fetch(t, index) :: {:ok, element} | :error
  def fetch(enumerable, index)
  def fetch(first..last, index) when is_integer(index),
    do: fetch_range(first, last, index)
