请问下clojure的reduce为什么与Julia的reduce不同

同样是函数式语言,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差这么多

你什么时候产生了所有语言的函数参数顺序必须一样的错觉?问之前先看看help好吧

julia> reduce((r,x)->x>1 ? r+1 : r,1:99;init=0)
98

不太懂你的意思,还有哪个init是干什么的??:yum:

我觉得你应该学习一下如何使用Julia帮助
打开REPL,输入?reduce,然后按回车

知道你的意思了,重点是init那个变量