Hello Mark,

2 questions / suggestions :

 * couldn't step 2) be computed outside function b, and then my-data be
replaced by new-struct ? This way, if you have several flavors of function
b, you will not have to repeat the code in steps 1) and 3) in each of those
flavors of b ? And then the problem you have disappear because new-struct is
known in advance by the function calling swap!

 * may I challenge your use of atom ? When I read your post, I had an orange
light flashing "warning, warning", so I can't resist do this :-) : from the
information you give, it seems to me that my-atom is like a repository.
Wouldn't this repository be consulted by other functions ? In this case,
don't you want to sometimes ensure (via the ensure function) that the
repository remains in the same state for the duration of some transactions ?
Or write some commute code to add/remove/update parts of it from within a
transaction ? Then shouldn't your atom really be a ref ?

Regards,

-- 
Laurent

2009/3/21 Mark Volkmann <r.mark.volkm...@gmail.com>

>
> I'm using an atom to hold a sorted-map whose keys are integer ids and
> values are a particular kind of struct.
> I have a function, call it "a", that adds an entry to this map.
> It contains just this line:
>
> (swap! my-atom b my-data)
>
> "b" is a function that:
> 1) determines the next available id by getting the last entry in the
> sorted-map and adding 1
> 2) creates new-struct using my-data
> 3) creates and returns a new map by calling (assoc current-map id
> new-struct)
>
> All that seems simple enough.
> However, I need to be able to get the new-struct that was just added
> so I can pass it to other functions.
> In this case, swap! returns the new map that has become the new value
> of the atom, not the value that was just added to the map.
>
> I'm looking for a suggestion on how I can get new-struct.
>
> --
> R. Mark Volkmann
> Object Computing, Inc.
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
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
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