From a731ef4d7ff5279dabbabc1b71edd3080af52f8d Mon Sep 17 00:00:00 2001 From: Eric Schulte Date: Wed, 14 Apr 2010 16:55:31 -0600 Subject: [PATCH] more debugging... --- propagator.org | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/propagator.org b/propagator.org index b271180..ac437fe 100644 --- a/propagator.org +++ b/propagator.org @@ -20,6 +20,8 @@ [name state] `(def ~name (agent ~state))) + (def que (ref '())) + (defmacro propagator "Define a new propagator." [name in-cells out-cells & body] `(do @@ -27,28 +29,30 @@ (assoc (meta name) :in-cells in-cells :out-cells out-cells)) ~in-cells ~@body) - (doseq [cell# ~in-cells] - (println (format "adding %S to %S" ~name cell#)) - (add-neighbor cell# ~name)) + (doseq [cell# ~in-cells] (add-neighbor cell# ~name)) ~name)) (defmacro run-propagator "Run a propagator, first collect the most recent values from all cells associated with the propagator, then evaluate." [propagator] - `(let [run-me# (fn [_#] - (apply ~propagator (map deref (:in-cells ^#'~propagator))))] - (map (fn [cell#] (send cell# run-me#)) (:out-cells ^#'~propagator)))) + `(let [output-val# (apply ~propagator (map deref (:in-cells ^#'~propagator))) + output-cells# (:out-cells ^#'~propagator)] + (append-spit "/home/eschulte/Desktop/spitoon" + (format "results in %S\n" output-val#)) + (append-spit "/home/eschulte/Desktop/spitoon" + (format "sending to %S\n" output-cells#)) + (dosync [cell# output-cells#] + (append-spit "/home/eschulte/Desktop/spitoon" + (format "sending %S to %S\n" output-val# output-cells#)) + (send cell# (fn [_#] output-val#))))) (defmacro add-neighbor "Add a neighbor to the given cell." [cell neighbor] `(add-watcher ~cell :send (agent nil :validator - (fn [_#] - (run-propagator ~neighbor) - (append-spit "/home/Desktop/spitoon" (~neighbor)) - true)) + (fn [_#] (dosync (run-propagator ~neighbor)) true)) (fn [_# _#]))) #+end_src -- 2.11.4.GIT