У меня довольно много записей в моей программе, которые я в конечном итоге помещаю на карту, используя одну из их поля в качестве ключа. Например
(defrecord Foo. [id afield anotherfield])
И затем я бы добавил это на карту с идентификатором в качестве ключа. Все это прекрасно выполнимо, но немного утомительно, например, при добавлении нового экземпляра Foo на карту мне нужно сначала извлечь ключ. Я' m интересно, существует ли где-нибудь в clojure.core структура данных для этого?
По сути, я хотел бы построить набор Foo, присвоив набору значение функции сопоставления клавиш (например: id) во время создания набора, а затем использовать это, когда я хочу добавить / найти / удалить / ... значение.
Итак, вместо:
(assoc my-map (:id a-foo) a-foo))
я мог бы сделать, скажем:
(conj my-set a-foo)
И что более интересно, объединить и объединить с поддержкой.