Skip to content

Commit 2cfd329

Browse files
Improve Enum.min_max/1,2,3 specs and docs (#14697)
- Add back min_max/2 spec for the empty_result fallback clause, as a separate spec with non overlapping domain - Merge min_max/1 and min_max/2 definitions
1 parent 06ff083 commit 2cfd329

File tree

1 file changed

+4
-10
lines changed

1 file changed

+4
-10
lines changed

lib/elixir/lib/enum.ex

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2187,19 +2187,13 @@ defmodule Enum do
21872187
nil
21882188
21892189
"""
2190-
@spec min_max(t, (element, element -> boolean) | module()) ::
2190+
@spec min_max(t, (element, element -> boolean) | module()) :: {element, element}
2191+
@spec min_max(t, (-> empty_result)) :: {element, element} | empty_result when empty_result: any
2192+
@spec min_max(t, (element, element -> boolean) | module(), (-> empty_result)) ::
21912193
{element, element} | empty_result
21922194
when empty_result: any
2193-
@spec min_max(
2194-
t,
2195-
(element, element -> boolean) | module(),
2196-
(-> empty_result)
2197-
) :: {element, element} | empty_result
2198-
when empty_result: any
21992195

2200-
def min_max(enumerable) do
2201-
min_max(enumerable, fn -> raise Enum.EmptyError end)
2202-
end
2196+
def min_max(enumerable, sorter_or_empty_fallback \\ fn -> raise Enum.EmptyError end)
22032197

22042198
def min_max(first..last//step = range, empty_fallback)
22052199
when is_function(empty_fallback, 0) do

0 commit comments

Comments
 (0)