 
   """
   @spec find(t, default, (element -> any)) :: element | default
-  def find(collection, ifnone \\ nil, fun)
-
-  def find(collection, ifnone, fun) when is_list(collection) do
-    do_find(collection, ifnone, fun)
-  end
-
-  def find(collection, ifnone, fun) do
-    Enumerable.reduce(collection, {:cont, ifnone}, fn(entry, ifnone) ->
-      if fun.(entry), do: {:halt, entry}, else: {:cont, ifnone}
+  def find(collection, default \\ nil, fun)
+
+  def find(collection, default, fun) when is_list(collection) do
+    do_find(collection, default, fun)
+  end
+
+  def find(collection, default, fun) do
+    Enumerable.reduce(collection, {:cont, default}, fn(entry, default) ->
+      if fun.(entry), do: {:halt, entry}, else: {:cont, default}
     end) |> elem(1)
   end
 


  ## find

  defp do_find([h|t], ifnone, fun) do
    if fun.(h) do
      h
    else
      do_find(t, ifnone, fun)
    end
  end

  defp do_find([], ifnone, _) do
    ifnone
  end

  ## find_index


  @doc """
  Returns the first item for which `fun` returns a truthy value. If no such
  item is found, returns `default`.

  ## Examples

