lrem - это команда, которая принимает n
и значение, удаляя первые n
элементы этого значения из списка.
Как можно написать что-то подобное, используя преобразователи:
(lrem [:a :b :c :b :a] 1 :b)
=> [:a :c :b :a]
(lrem [:a :b :c :b :a] 2 :b)
=> [:a :c :a]
Я хотел написать что-то более простое, чем это:
(loop [acc 0
output []
[x & more :as arr] arr]
(cond (empty? arr) output
(= count acc) (vec (concat output arr))
(= value x) (recur (inc acc) output more)
:else (recur acc (conj output x) more)))