An implementation of `propagators` in clojure