为什么(group-by identity(范围150))返回结果
{32 [32],1 [1],33 [33],2 [2],34 [34],3 [3],35 [35] ......
它是多线程相关的吗?它有什么办法吗?
......它是否违反了合同?
返回由每个元素上的f的结果键入的coll元素的映射.每个键的值将是它们在coll中出现的顺序的相应元素的向量.
注意:不是重复为什么Clojure重复认为它应该只有一个参数?.我没有使用循环.
(def t
#(let [[low high] (sort %&)] {:low low :high h}))
(t 3 2)
=> {:low 2, :high 3}
Run Code Online (Sandbox Code Playgroud)
鉴于这是按预期工作的.怎么没有:
(def t
#(let [[low high] (sort %&)]
(if (= 0 low)
nil
(do
(println {:low low :high high})
(recur low (dec high))))))
(t 3 2)
=> java.lang.IllegalArgumentException: Mismatched argument count to recur, expected: 1 args, got: 2
Run Code Online (Sandbox Code Playgroud)
鉴于它说它期待1个参数我可以猜测我可以通过将参数转换为集合来使其工作:
(def t
#(let [[low high] (sort %&)]
(if (= 0 low)
nil
(do
(println {:low low :high high})
(recur …Run Code Online (Sandbox Code Playgroud)