These are the slides from the Clojure/conj 2013 talk "Propagators in Clojure". The referenced "propaganda" library can be found at https://github.com/tgk/propaganda Questions can be directed at @tgkristensen
and the computational organization is specified separately or performed more or less automatically.” (what, not how) CONSTRAINTS - A Language for Expressing Almost-Hierarchical Descriptions Gerald Jay Sussman and Guy Lewis Steele Jr. AI Journal, 1981
Sussman {axch,gjs}@mit.edu December 13, 2008 Abstract We develop a programming model built on the idea that the basic computational elements are autonomous machines interconnected by shared cells through which they communicate. Each machine con- tinuously examines the cells it is interested in, and adds information to some based on deductions it can make from information from the others. This model makes it easy to smoothly combine expression- oriented and constraint-based programming; it also easily accommo- dates implicit incremental distributed search in ordinary programs. This work builds on the original research of Guy Lewis Steele Jr. [18] and was developed more recently with the help of Chris Hanson.
Alexey Andreyevich Radul B.S., Massachusetts Institute of Technology (2003) M.Eng., Massachusetts Institute of Technology (2005) Submitted to the Department of Electrical Engineering and Computer Science in partial fulfillment of the requirements for the degree of Doctor of Philosophy in Computer Science and Engineering at the MASSACHVSETTS INSTITVTE OF TECHNOLOGY September 2009 c Massachusetts Institute of Technology 2009. All rights reserved. Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Department of Electrical Engineering and Computer Science September 4, 2009
c d) (prod a b p) (add-value a 2) (add-value b 3) (add-value c 4) (get-value d) ;; 10 (sum p c d) (prod a b p) (add-value a 2) (add-value b 3) (add-value c 4) (add-value d 9) ;; Exception
(make-cell) c (make-cell) d (make-cell)] (let [p (make-cell)] (prod a b p) (sum p c d) (add-value a 2) (add-value b 3) (add-value c 4) (get-value d))))) - Globally bound fns - dosync - Mutable - Where are the propagators? - Snapshots? - No ClojureScript support