获取惰性列表的前n项的惰性列表

int*_*tar 3 sequences clojure

在Clojure中,我有一个列表

[a, b, c, d]
Run Code Online (Sandbox Code Playgroud)

我想从它中删除一个新的无限元组列表

[ [a,b,c], [b,c,d], [c,d,a], [d,a,b], [a,b,c] ... ]
Run Code Online (Sandbox Code Playgroud)

我试图通过内置的seq函数找出如何以纯函数方式执行此操作.

这是直截了当的,我还没有破解它?或者它实际上是某种难题?(在其他语言中,我会编写自己的循环迭代器并跟踪很多状态.)

更新:此外,为什么有人投票这个?

Kyl*_*yle 10

这可以使用循环分区的组合来完成

(take 5 (partition 3 1 (cycle '(a b c d))))
;; => ((a b c) (b c d) (c d a) (d a b) (a b c))
Run Code Online (Sandbox Code Playgroud)