Skip to content

Commit caf1d20

Browse files
committed
Use 2-arg findmax/min for findmax/min(a)
1 parent c91f950 commit caf1d20

File tree

1 file changed

+3
-44
lines changed

1 file changed

+3
-44
lines changed

base/reduce.jl

Lines changed: 3 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -851,50 +851,10 @@ findmin(f, domain) = mapfoldl(x -> (f(x), x), _rf_findmin, domain)
851851
_rf_findmin((fm, m), (fx, x)) = isgreater(fm, fx) ? (fx, x) : (fm, m)
852852

853853
findmax(a) = _findmax(a, :)
854-
855-
function _findmax(a, ::Colon)
856-
p = pairs(a)
857-
y = iterate(p)
858-
if y === nothing
859-
throw(ArgumentError("collection must be non-empty"))
860-
end
861-
(mi, m), s = y
862-
i = mi
863-
while true
864-
y = iterate(p, s)
865-
y === nothing && break
866-
m != m && break
867-
(i, ai), s = y
868-
if ai != ai || isless(m, ai)
869-
m = ai
870-
mi = i
871-
end
872-
end
873-
return (m, mi)
874-
end
854+
_findmax(a, ::Colon) = findmax(idx -> a[idx], keys(a))
875855

876856
findmin(a) = _findmin(a, :)
877-
878-
function _findmin(a, ::Colon)
879-
p = pairs(a)
880-
y = iterate(p)
881-
if y === nothing
882-
throw(ArgumentError("collection must be non-empty"))
883-
end
884-
(mi, m), s = y
885-
i = mi
886-
while true
887-
y = iterate(p, s)
888-
y === nothing && break
889-
m != m && break
890-
(i, ai), s = y
891-
if ai != ai || isless(ai, m)
892-
m = ai
893-
mi = i
894-
end
895-
end
896-
return (m, mi)
897-
end
857+
_findmin(a, ::Colon) = findmin(idx -> a[idx], keys(a))
898858

899859
"""
900860
argmax(f, domain)
@@ -1083,8 +1043,7 @@ any(f, itr) = _any(f, itr, :)
10831043

10841044
function _any(f, itr, ::Colon)
10851045
anymissing = false
1086-
for x in itr
1087-
v = f(x)
1046+
for x in itr v = f(x)
10881047
if ismissing(v)
10891048
anymissing = true
10901049
elseif v

0 commit comments

Comments
 (0)