向量中的以下clojure代码dedupe元素:
user> (partition-by identity [1 2 2 3 3 3 4 2 2 1 1 1])
((1) (2 2) (3 3 3) (4) (2 2) (1 1 1))发布于 2019-09-23 20:00:45
如果您还没有看到它,一定要对Clojure CheatSheet进行书签。
用良好的信息和示例单击partition-by 带你去ClojureDocs.org。
单击右上角以查看Clojure源代码.请看第二个使用函数f和集合coll的特性
([f coll]
(lazy-seq
(when-let [s (seq coll)]
(let [fst (first s)
fv (f fst)
run (cons fst (take-while #(= fv (f %)) (next s)))]
(cons run (partition-by f (seq (drop (count run) s))))))))因此,fst是集合中的第一项,而fv是使用f函数进行转换的值。然后,它将使用与fv匹配的所有项,此时它将与第一个不匹配项一起递归。
https://stackoverflow.com/questions/58068125
复制相似问题