Clojure 按顺序复制元素

Clojure duplicate elements in sequence

我有一个简单的任意元素序列,我想将其二乘二减少。

为了做到这一点,我生成了数据对,但我这样做的方式是错误的,因为我需要调用一个生成数据的函数两次:

(defn gen-pairs [l]
  (partition 2 (drop 1 (take l (interleave (gen-data) (gen-data))))))

如何避免调用 gen-data 两次(gen-data returns 一系列项目,例如 range)?

如果您包含一个您想要的输出示例,您的问题会更清楚,但我认为您在 partition 之后的步骤为 1:

user=> (partition 2 1 [1 2 3 4 5 6 7])
((1 2) (2 3) (3 4) (4 5) (5 6) (6 7))