Что такое идиоматический способ сочетания нового значения с вектором, который находится на карте в атоме?Обновление свойства Clojure atom
Ближайший я смог прийти следующий:
(def blog (atom {:posts []}))
(swap!
blog
(fn [current]
{:posts (conj (:posts current) {:title "War of Worlds"})}))
Какие результаты в:
{:posts [:title "War of Worlds"]}
Использование лямбда чувствует излишне многословным.
'update-in' - ваш друг. –
(swap! Blog # (update-in% [: posts] conj {: title "War of the Worlds"})) – galdre
... что ваш исходный код _does not_ фактически предотвращает ': posts' от оставшегося вектор. Вы можете легко проверить, что '(conj []: foo)' возвращает '[: foo]', так же как '(conj (list): foo)' returns ''(: foo)'. –