Clojure:从不同大小的列表中更加惯用的元素配对?

Yu *_*hen 3 clojure

我想创建一个对的列表cols,和patch.cols会有更多的元素.元素patch将在配对中重复.

例如,

(element-wise-patch '(1 3 5 7 9) '(2 4) '())
([1 2] [3 4] [5 2] [7 4] [9 2])
Run Code Online (Sandbox Code Playgroud)

这是我尝试实现语义.我希望学习更多惯用,更简单的解决方案.

(defn element-wise-patch [cols patch patched]
      (if (<= (count cols) (count patch))
        (concat patched (map vector cols patch))
        (let [[compatible remaining] (split-at (count patch) cols)]
          (element-wise-patch remaining patch (concat patched (map vector compatible patch)))))
Run Code Online (Sandbox Code Playgroud)

我觉得可能已经存在构造来进行这样的修补配对.此外,我的描述可能不足以关联类似的解决方案.

请给我一些指针,或者只是帮助我更清楚地定义我的问题.

在此先感谢您的帮助!

Shl*_*omi 7

很简单:

(map vector [1 3 5 7 9] (cycle [2 4]))
Run Code Online (Sandbox Code Playgroud)