我编写了以下函数(更容易展示而不是解释):
(split 2 (list 1 2 3 4 5 6))
=> ((1 2) (2 3) (3 4) (4 5) (5 6))
(defn split [n xs]
(if (> (count xs) (dec n))
(cons (take n xs) (split n (rest xs)))
'()))
我理解,在Clojure中,列表并不是唯一的一流数据结构。是否有意义将此数据结构写成与特定数据结构无关的形式?而且,如果我的实现不是最有效的,我该如何使其更有效和/或符合惯用法呢?
谢谢!