是否有更好的方法来映射除第一项之外的所有项目?

时间:2012-10-22 16:50:58

标签: clojure

我觉得必须有一个更清洁的方法来做到这一点,但我没有看到它。

(defn map-rest
  "Passes through the first item in coll intact. Maps the rest with f."
  [f coll]
  (concat (list (first coll)) (map f (rest coll))))

1 个答案:

答案 0 :(得分:25)

解构并使用cons代替concat

(defn map-rest [f [fst & rst]] (cons fst (map f rst)))

REPL输出:

user=> (map-rest inc [1 2 3 4 5])
(1 3 4 5 6)