On Wed, Mar 4, 2009 at 10:35 AM, Anand Patil < anand.prabhakar.pa...@gmail.com> wrote:
> > Hi Rich, > > I like the flexibility of the new watches, but I'm missing a way to > watch for errors. Currently, if an agent's action results in an error > its watchers aren't even triggered. > > Thanks, > Anand > Also, (remove-watch a key) fails to raise an error if a doesn't have any watches associated with key. Anand > > On Feb 27, 2:57 pm, Rich Hickey <richhic...@gmail.com> wrote: > > I've added (back)synchronouswatches(svn 1309+), which used to exist > > for agents, now for all reference types. > > > > (defn add-watch > > > > "Experimental. > > > > Adds a watch function to an agent/atom/var/ref reference. The watch > > fn must be a fn of 4 args: a key, the reference, its old-state, its > > new-state. Whenever the reference's state might have been changed, > > any registeredwatcheswill have their functions called. The watch > > fn > > will be called synchronously, on the agent's thread if an agent, > > before any pending sends if agent or ref. Note that an atom's or > > ref's state may have changed again prior to the fn call, so use > > old-state rather than derefing the reference. Note also that watch > > fns > > may be called from multiple threads simultaneously. Var watchers are > > triggered only by root binding changes, not thread-local set!s" > > > > [reference key fn] ...) > > > > (defn remove-watch [reference key]...) > > > > I've left in add/remove-watcher for now, in order to avoid disruption. > > It is defined in terms of add-watch, demonstrating add-watch is the > > more flexible core function. My plan is to remove add-watcher/remove- > > watcher, since you can build your own such variants. > > > > Highlights are: > > > > - Deterministic times when callbacks will occur. > > > > - Provision of before/after state - you determine what constitutes an > > interesting change. > > > > - Arbitrary key will be passed back to callback. > > > > Please try them out for your latest Cells-like and other reactive > > programs. I'd like to move this out of the experimental category. > > > > Feedback and questions welcome, > > > > Rich > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---