0

我一直在尝试编写一个从集合或向量中获取跨度的 Clojure 函数。例如,我想通过分两步获取第二个元素到第五个元素来操作诸如 (:a :b :c :d :e :f :g :h) 之类的集合。因此,输出(:b:d)。

4

2 回答 2

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

希望这可以帮助!

于 2013-11-12T18:52:03.003 回答
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)
于 2013-11-11T22:54:36.680 回答