期待用可选的步进输入编写跨越函数

时间:2013-11-11 22:46:10

标签: clojure clojure-contrib

我试图编写一个从集合或向量中获取跨度的Clojure函数。 例如,我想操纵一个集合,如 (:a:b:c:d:e:f:g:h) 将第二个元素以第二个元素分成两个步骤。 因此,输出 (:b:d)。

2 个答案:

答案 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))

希望这有帮助!