我试图编写一个从集合或向量中获取跨度的Clojure函数。 例如,我想操纵一个集合,如 (:a:b:c:d:e:f:g:h) 将第二个元素以第二个元素分成两个步骤。 因此,输出 (:b:d)。
答案 0 :(得分:0)
查看(take-nth n coll)功能
(take-nth n coll)
Returns a lazy seq of every nth item in coll.
user=> (take-nth 2 (range 10))
(0 2 4 6 8)
这不是您问题的完全匹配,但它是灵感的良好起点。
当然,您可以通过以下方式检查源代码:
(source take-nth)
答案 1 :(得分:0)
如果你现在还没弄明白,这里有一个能做到你想要的功能。
(defn take-span
[start end step coll]
(take-nth step (take (- end start) (drop start coll))))
(take-span 1 4 2 '(:a :b :c :d :e :f :g :h))
希望这有帮助!