       #=> { [2], [1,3] }
 
   """
+  @spec partition(t, fun(element, do: any)), do: {t, t}
   def partition(collection, fun) when is_list(collection) do
     do_partition(collection, fun, [], [])
   end

      #=> [4]

  """
  def filter_map(collection, filter, mapper) when is_list(collection) do
    lc item inlist collection, filter.(item), do: mapper.(item)
  end

      2

  """
  @spec times(non_neg_integer, fun(non_neg_integer, do: any)), do: non_neg_integer
  def times(times, function) when times >= 0 do
    case is_function(function, 0) do
      true ->
