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