Clojure 这里有哪些论点?
我是clojure的新手。 我有这个Clojure 这里有哪些论点?,clojure,Clojure,我是clojure的新手。 我有这个 (defn max-val [x & xs] (reduce #(if (< %1 %2) %2 %1) (flatten (cons x xs)))) 将返回一个lazy seq,只对#()函数作一个参数 (减少f coll)(减少f val coll) f应该是2个参数的函数。如果未提供val, 返回将f应用于coll中前两项的结果,然后 将f应用于该结果和第三项,等等。如果coll不包含 项,f也必须不接受任何参数,并减少返回值 不
(defn max-val [x & xs]
(reduce #(if (< %1 %2) %2 %1) (flatten (cons x xs))))
将返回一个lazy seq,只对#()函数作一个参数
(减少f coll)(减少f val coll)
f应该是2个参数的函数。如果未提供val,
返回将f应用于coll中前两项的结果,然后
将f应用于该结果和第三项,等等。如果coll不包含
项,f也必须不接受任何参数,并减少返回值
不带参数调用f的结果。如果coll只有1项,则它
返回,而不调用f。如果提供了val,则返回
将f应用于val和coll中的第一项的结果,然后
将f应用于该结果和第二项,如果coll不包含
项,返回val,不调用f
因此,它将函数应用于列表中的下一项,以及上一次调用的结果(第一次使用列表中的前两项)
假设您这样调用函数:
(reduce #(if (< %1 %2) %2 %1) '(1 2 3 4))
(减少#(如果(<%1%2)%2%1)(1234))
首先用1
和2
调用它,返回2
。然后调用它,结果为2
,下一项为3
,并返回3
。然后用结果调用它,3
,然后调用下一项4
,并返回4
,作为最终结果
每一步都使用上一次调用的结果作为下一次调用的第一个参数。让我们看看是否reduce
(减少f coll)(减少f val coll)
f应该是2个参数的函数。如果未提供val,
返回将f应用于coll中前两项的结果,然后
将f应用于该结果和第三项,等等。如果coll不包含
项,f也必须不接受任何参数,并减少返回值
不带参数调用f的结果。如果coll只有1项,则它
返回,而不调用f。如果提供了val,则返回
将f应用于val和coll中的第一项的结果,然后
将f应用于该结果和第二项,如果coll不包含
项,返回val,不调用f
因此,它将函数应用于列表中的下一项,以及上一次调用的结果(第一次使用列表中的前两项)
假设您这样调用函数:
(reduce #(if (< %1 %2) %2 %1) '(1 2 3 4))
(减少#(如果(<%1%2)%2%1)(1234))
首先用1
和2
调用它,返回2
。然后调用它,结果为2
,下一项为3
,并返回3
。然后用结果调用它,3
,然后调用下一项4
,并返回4
,作为最终结果
每一步都使用上一次调用的结果作为下一次调用的第一个参数。您是否在询问如何使用reduce?或者您正在询问如何使用#(…%…%1…%n…)语法构建匿名函数?
(cons1 2 3)
根本不返回惰性seq:为cons
提供两个以上的参数是错误的,或者第二个参数不是顺序的。您是否询问如何使用reduce?或者您正在询问如何使用#(…%…%1…%n…)语法构建匿名函数?(cons123)
根本不返回惰性seq:为cons
提供两个以上的参数是错误的,或者第二个参数不是顺序的。