 
   @doc """
   Folds (reduces) the given list from the left with
-  a function. Requires an accumulator.
+  a function. Requires an accumulator, which can be any value.
 
   ## Examples
 


  @doc """
  Folds (reduces) the given list from the right with
  a function. Requires an accumulator.

  ## Examples

      iex> List.foldr([1, 2, 3, 4], 0, fn x, acc -> x - acc end)
      -2

  """
  @spec foldr([elem], acc, (elem, acc -> acc)) :: acc when elem: var, acc: var


      iex> List.foldl([1, 2, 3, 4], 0, fn x, acc -> x - acc end)
      2
      
      iex> List.foldl([1, 2, 3], {0, 0}, fn x, {a1, a2} -> {a1 + x, a2 - x} end)
      {6, -6}

  """
  @spec foldl([elem], acc, (elem, acc -> acc)) :: acc when elem: var, acc: var
