From 6658e33a4db6724b0e5fa102735d517694343dd8 Mon Sep 17 00:00:00 2001 From: Takafumi Arakaki Date: Sun, 7 Jun 2020 17:52:09 -0700 Subject: [PATCH] Allow non-Function callables to be used in count(f, itr) --- base/reduce.jl | 2 +- test/reduce.jl | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/base/reduce.jl b/base/reduce.jl index 6d19fa50e3037..e772929787f5a 100644 --- a/base/reduce.jl +++ b/base/reduce.jl @@ -840,7 +840,7 @@ end ## count -_bool(f::Function) = x->f(x)::Bool +_bool(f) = x->f(x)::Bool """ count(p, itr) -> Integer diff --git a/test/reduce.jl b/test/reduce.jl index 9501f41f8b77c..03aada7d3f3c0 100644 --- a/test/reduce.jl +++ b/test/reduce.jl @@ -468,6 +468,11 @@ end @test count(!iszero, Int[1]) == 1 @test count(!iszero, [1, 0, 2, 0, 3, 0, 4]) == 4 +struct NonFunctionIsZero end +(::NonFunctionIsZero)(x) = iszero(x) +@test count(NonFunctionIsZero(), []) == 0 +@test count(NonFunctionIsZero(), [0]) == 1 +@test count(NonFunctionIsZero(), [1]) == 0 ## cumsum, cummin, cummax