# add-watch Register a watcher fn on a ref cell under key. The fn is invoked with `(key cell old new)` on every `swap!`/`reset!` (never on `def`). ## Syntax
[add-watch $a $key $fn]
## Parameters - `$a` — A ref cell (anonymous ref or `[var x]` binding cell). - `$key` — Any hashable value used to identify the watcher. - `$fn` — Watcher callback, called as `($fn $key $a $old $new)`. ## Examples
def a [ref 0]
[add-watch $a :log {|k cell old new| echo "change:" $old "->" $new}]
[reset! $a 5]    # prints: change: 0 -> 5

def ready false
[add-watch [var ready] :log {|k cell old new| echo "ready:" $old "->" $new}]
[reset! [var ready] true]   # prints: ready: false -> true
## Returns `nil`. ## See Also `remove-watch`, `swap!`, `reset!`, `ref`