diff --git a/lib/elixir/lib/enum.ex b/lib/elixir/lib/enum.ex index 6aa55bcb7db..8609a74e8e9 100644 --- a/lib/elixir/lib/enum.ex +++ b/lib/elixir/lib/enum.ex @@ -449,8 +449,8 @@ defmodule Enum do end def find(collection, ifnone, fun) do - Enumerable.reduce(collection, ifnone, fn(entry, _) -> - if fun.(entry), do: throw({ :enum_find, entry }) + Enumerable.reduce(collection, ifnone, fn(entry, ifnone) -> + if fun.(entry), do: throw({ :enum_find, entry }), else: ifnone end) catch { :enum_find, entry } -> entry diff --git a/lib/elixir/test/elixir/enum_test.exs b/lib/elixir/test/elixir/enum_test.exs index b15b951f22c..933b2f4e414 100644 --- a/lib/elixir/test/elixir/enum_test.exs +++ b/lib/elixir/test/elixir/enum_test.exs @@ -408,6 +408,8 @@ defmodule EnumTest.Range do range = Range.new(first: 2, last: 6) assert Enum.find(range, fn(x) -> rem(x, 2) == 0 end) == 2 assert Enum.find(range, fn(x) -> rem(x, 2) == 1 end) == 3 + assert Enum.find(range, fn _ -> false end) == nil + assert Enum.find(range, 0, fn _ -> false end) == 0 end test :find_value do