Есть ли лучший способ сопоставить все, кроме первого элемента?

Я чувствую, что должен быть более чистый способ сделать это, но я этого не вижу.

(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

Разрушение и использование 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)