This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2024-01-31
Channels
- # aleph (24)
- # announcements (2)
- # aws (1)
- # babashka (2)
- # beginners (46)
- # calva (15)
- # chlorine-clover (1)
- # clojure-europe (27)
- # clojure-nl (3)
- # clojure-norway (13)
- # clojure-uk (7)
- # clojurescript (16)
- # datomic (29)
- # emacs (4)
- # fulcro (16)
- # hugsql (6)
- # hyperfiddle (65)
- # lsp (9)
- # malli (3)
- # off-topic (29)
- # pedestal (1)
- # releases (1)
- # shadow-cljs (52)
- # specter (5)
- # xtdb (1)
I'm trying to transform something like this:
(def -TAGS_BY_GROUP
{:tag-group-1 [{:id "id-1" :label "Tag 1A"}
{:id "id-2" :label "Tag 1B"}
{:id "id-3" :label "Tag 1C"}]
:tag-group-2 [{:id "id-4" :label "Tag 2A"}
{:id "id-5" :label "Tag 2B"}]
:tag-group-3 [{:id "id-6" :label "Tag 3A"}
{:id "id-7" :label "Tag 3B"}
{:id "id-8" :label "Tag 3C"}]})
into this (an index)
{"id-1" {:id "id-1" :label "Tag 1A"},
"id-2" {:id "id-2" :label "Tag 1B"},
"id-3" {:id "id-3" :label "Tag 1C"},
"id-4" {:id "id-4" :label "Tag 2A"},
"id-5" {:id "id-5" :label "Tag 2B"},
"id-6" {:id "id-6" :label "Tag 3A"},
"id-7" {:id "id-7" :label "Tag 3B"},
"id-8" {:id "id-8" :label "Tag 3C"}}
here's my half-specter solution:
(->> (sp/select [sp/MAP-VALS sp/ALL] -TAGS_BY_GROUP)
(map (juxt :id identity))
(into {}))
what would be the idiomatic specter way to do it?Something like this:
(into {} (sp/traverse [sp/MAP-VALS sp/ALL (sp/collect-one :id)] tags-by-group)
🙏 1