我发现自己需要将元素序列转换为“对”序列,其中第一个元素是初始序列的元素,而 while 的第二个元素是该元素的初始序列的尾部。
(abcde) -> ((a (bcde)) (b (cde)) (c (de)) (d (e)) (e ()))
我写了这个:
(defn head-and-tail [s]
(cond (empty? s) ()
:else (cons (list (first s) (rest s)) (head-and-tail (rest s)))))
是否有内置函数或内置函数的简单组合可以更轻松地做到这一点?