Hi Matt, Clojure dynamically binds *agent* to the currently active agent on a thread.
Stuart > Hi all, > I have a newbie question about Agents. I've been looking at the > ants.clj file: > http://clojure.googlegroups.com/web/ants.clj?hl=en&gda=-X7f3joAAABoLitVpBTEcNIQc_NHg39SZujXwZ5jF2pV4ArMqQ0G0e9OU0NQiFWgQuhmPR7veGf97daDQaep90o7AOpSKHW0 > Most of it makes sense to me, but the use of Agents is confusing. > For example, the line: > (send-off animator animation) > associates the "animator" Agent with the "animation" function, which > I follow. But then the animation function looks like: > (defn animation [x] > (when running > (send-off *agent* #'animation)) > (. panel (repaint)) > (. Thread (sleep animation-sleep-ms)) > nil) > > That third line has me lost - I don't know what *agent* is. In > Common Lisp, that would indicate a global variable, but no such > variable is declared (two other functions, "evaporation" and > "behave" have a similar call, and are the only other references to > *agent* in the file). I'm guessing it's some sort of reference to > the agent associated with the current Action, but where is that > documented? Secondly, why does the function immediately send off to > another agent? Is this in order to "loop" the function (that is, > keep spawning an Action to update the agent)? If that is the case, > is the Thread.sleep call in order to hold a reference to the agent > so that the next Action doesn't start immediately? > Thanks for your time helping a newb; I'm pretty excited about > Clojure, and can't wait to get my hands dirty with it. > -Matt > > --~--~---------~--~----~------------~-------~--~----~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---