Hi,

maybe this does what you want. I'm not sure, since you add the new
meeting to *all* meetings? And where does the :title come from when
you add a new meeting? I assume you have a map of a meeting title and
a meeting and want to add this to the corresponding entry in the data
map. If the meeting is not contained it will be added as n+1.

(defn insert-meeting-data
  [data {:keys [title meeting]}]
  (if-let [k (some #(when (= title (get-in data [% :title])) %) (keys
data))]
    (update-in data [k :meetings] conj meeting)
    (let [k (inc (apply max (keys data)))]
      (assoc data k {:title title :meetings [meeting]}))))

To be used eg. as:
(reduce insert-meeting-data data sequence-of-title-meeting-maps)

> Also, as a secondary concern, I read on here a while ago that when you
> find yourself typing "((" it's a sign of an issue - how, given the
> data structure I've to work with, woud you access the title of a value
> if not using that "((" syntax, i.e. ((data key) :title)?

(( is not necessarily a sign of an issue, but for your example you can
do (:title (data key)) or (get-in data [key :title]).

> (loop [data (sorted-map)
>          collection newData
>          meeting (first collection)]
>
>   (def key ( .... ))

Almost surely not what you want. You want a let, not a def. def is
always global and in 95% of the cases should only be used in global
context. Exceptions are for example closures.

(let [hidden-atom (atom nil)]
  (defn can-access-hidden-atom
    [..]
    ....))

>   (if (not (nil? (next collection)

You can save the nil?. (if (not (next collection))) will also work.
nil is logically false.

>     (recur (cond (not (nil? (data key)))
>                (true? true)

*ieeck* Please do (cond ... :else default-clause). Not true, or (true?
true) or other stuff.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to