 
   """
   @spec intersperse(t, element) :: list
-  def intersperse(collection, element) do
+  def intersperse(enumerable, element) do
     list =
-      reduce(collection, [], fn(x, acc) ->
+      reduce(enumerable, [], fn(x, acc) ->
         [x, element | acc]
       end) |> :lists.reverse()
 


  """
  @spec scan(t, any, (element, any -> any)) :: list
  def scan(enum, acc, fun) do
    {res, _} = reduce(enum, {[], acc}, R.scan_3(fun))
    :lists.reverse(res)
  end

  @doc """
  Returns a list of collection elements shuffled.

  Notice that you need to explicitly call `:random.seed/1` and
  set a seed value for the random algorithm. Otherwise, the

  [reservoir sampling](https://en.wikipedia.org/wiki/Reservoir_sampling#Relation_to_Fisher-Yates_shuffle)
  algorithm.
  It assumes that the sample being returned can fit into memory;
  the input `enumerable` doesn't have to, as it is traversed just once.

  ## Examples

