Just a quick guess after a quick glimpse at the code you linked:

 (map #(send % a-day-in-the-life-agent-fn) domiciles)

map is lazy. It doesn't execute anything until you request the result.
(do ... (map ...) (foo)) discards the result of map, making it a
no-op.
This also explains why it works in the repl: It prints out the result
of the call. In an (implicit) do, it doesn't.

Use doseq in such situations.

On Sun, Apr 22, 2012 at 16:52, Goldritter
<marcus.goldritter.lind...@googlemail.com> wrote:
> I wanted to log some information during the execution of the genetic
> algorithm I posted earlier here. So I chnaged the code and changed the
> function 'track-evolution' so, that it now accept a maximal runtime and
> returns a map which contains the logged information.
> The information where stored first as states in the agents which take part
> in this algorithm as a Map, which has as key the time, when the function is
> started and as value the information how long it takes to finishes the
> function and if there was an exception in the agent.
> When 'track-evolution' finishes, it retrieves the states of the agents and
> put these map into an other map with more infomrations and then returns the
> map.
>
> When I write the following code into the REPL:
> => (prepare-evolution 3) (start-evolution) (def stat (track-evolution 5
> :second))
>
> (:creator-log stat)
> Then I get as result
> => {"593848" {<Map of the Agent>}, "9db6ff" {<Map of the Agent>}, "d03269"
> {<Map of the Agent>}}
>
> (<Map of the Agent> is the Map with the information I described above).
>
> To make it easier I wrote a function which I want to execute
>
> (defn retrieve-new-stats
>   [number-of-creators time timetype]
>   (prepare-evolution number-of-creators)
>     (start-evolution)
>     (track-evolution time timetype))
>
> And when I use this function
> =>(def stat (retrieve-new-stats 3 5 :second))
> I get as result for '(:creator-log stat)' this:
> {"593848" {}, "9db6ff" {}, "d03269" {}}
>
> In this case I get only empty maps. I tried also to use do in the function
> like
>
> (defn retrieve-new-stats
>   [number-of-creators time timetype]
>   (do (prepare-evolution number-of-creators)
>     (start-evolution)
>     (track-evolution time timetype)))
>
> But there I got only empty maps too.
>
> So I wonder why I get filled maps, when I write these three function into
> the REPL directly and only empty maps, when I execute them in a function.
> What is the difference?
>
> Has anybody an idea?
>
> --
> 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



-- 
Moritz Ulrich

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