(defstruct AssetMissing [id i32]) (defvar seen i64) (defn load-all [] () (signal (AssetMissing {.id 1})) ; () — the caller carries on (signal (AssetMissing {.id 2}))) (defn main [] () (load-all) ; no handler: a no-op (print seen) (println "") ; 0 ;; A handler that returns normally accumulates and lets the signaller run on. (handler-bind [(AssetMissing [c] (set seen (+ seen (i64 (.id c)))))] (load-all)) (print seen) (println "")) ; 3