同样是函数式语言,clojure的reduce例子可以是这样,reduce底层用到递归
(reduce (fn [r x]
(if (> x 1)
(inc r)
r)) 0 (range 1 100))
98
相同的思想用到Julia上却抛出一个错误
reduce((r,x)-> if x>1 r+1 else r end,0,collect(1:100))
ERROR: MethodError: no method matching reduce(::getfield(Main, Symbol("##45#46")), ::Int64, ::UnitRange{Int64})
Closest candidates are:
reduce(::Any, ::Number) at reduce.jl:363
reduce(::Any, ::Any; kw...) at reduce.jl:361
reduce(::Any, ::SharedArrays.SharedArray) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.1/SharedArrays/src/SharedArrays.jl:557
同样是函数式语言,为什么reduce差这么多