У меня есть карта, которая выглядит следующим образом:
{\a [\h]
\h [\w \w]
\i [\w \h \t]
\p [\t \u \h \a]
\s [\t \a \t \t \i \w \h]
\t [\a]
\u [\t \t \s]
\w []}
Я хочу удалить, например, \ w как из ключей, так и из значений. т.е. оставляя это
{\a [\h]
\h []
\i [\h \t]
\p [\t \u \h \a]
\s [\t \a \t \t \i \h]
\t [\a]
\u [\t \t \s]}
Обратите внимание, клавиша \ w ушла и \ w ушла от всех значений!
Прямо сейчас у меня есть это, которое работает, но я уверен должен быть лучший способ Clojurey!
(defn remove-last [last cmap]
(reduce-kv (fn [acc k v]
(if (empty? v)
acc
(into acc {k (vec (filter #(not= % last) v))}))) {} cmap))
Ключом для удаления всегда будет пустой вектор.
Как я могу сделать это лучше?