   """
   @spec take_while(t, (element -> as_boolean(term))) :: list
   def take_while(enumerable, fun) when is_list(enumerable) do
-    do_take_while(enumerable, fun)
+    do_take_while(enumerable, fun, [])
   end
 
   def take_while(enumerable, fun) do


  def take(enumerable, count) when is_list(enumerable)
  and is_integer(count) and count > 0 do
    do_take(enumerable, count)
  end

  def take(enumerable, count) when is_integer(count) and count > 0 do

  @spec uniq_by(t, (element -> term)) :: list

  def uniq_by(enumerable, fun) when is_list(enumerable) do
    do_uniq(enumerable, %{}, fun, [])
  end

  def uniq_by(enumerable, fun) do
