Oh nvm, just saw that it was suggested before.
But maybe this is new:
(def m
{"outerKeyA" {:innerKeyA {"string id" {:foo 1 :bar 2}}}
"outerKeyB" {:innerKeyB {"string id" {:bar 5 :baz 10}}}})
(defn nested-seq [m]
(for [[outer-key collections] m
[collection-name collection] collections
[string-id data] collection]
{:outer-key outer-key :collection-name collection-name :string-id
string-id :data data}
))
(pprint (nested-seq m))
;; produces
({:outer "outerKeyA",
:collection-name :innerKeyA,
:string-id "string id",
:data {:foo 1, :bar 2}}
{:outer "outerKeyB",
:collection-name :innerKeyB,
:string-id "string id",
:data {:bar 5, :baz 10}})
for list comprehensions behave like doseq except that they return whatever
the body does, thus letting you move your side effects somewhere else.
Maybe this helps,
/thomas
On Tuesday, December 10, 2013 12:48:56 PM UTC+1, Thomas Heller wrote:
>
> FWIW you can simplify the nested doseqs like this
>
> (doseq [[outer-keys collections] m
> [collection-name collection] collections
> [string-id data] collection]
> ;; do stuff with the above
> )
>
> HTH,
> /thomas
>
>
> On Wednesday, December 4, 2013 12:05:14 AM UTC+1, Ryan wrote:
>>
>> Hi all,
>>
>> I am trying to figure out a better way to loop the following map than
>> using nested doseq. The map has the following structure:
>>
>> (def m
>>> {"outerKeyA" {:innerKeyA {"string id" {:foo 1 :bar 2}}}
>>> "outerKeyB" {:innerKeyB {"string id" {:bar 5 :baz 10}}}})
>>
>>
>> So, right now i am doing the following:
>>
>> (doseq [[outer-keys collections] m]
>>> (doseq [[collection-name collection] collections]
>>> (doseq [[string-id data] collection]
>>> ;; do stuff with all the above
>>> )))
>>
>>
>> Is there a more idiomatic/better way to do deeply nested
>> iterations/traversal of map of maps?
>>
>> Thank you for any replies!
>>
>> Ryan
>>
>>
--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.