Work that must survive the eval that started it. An eval grounds each
top-level form, and tasks spawned but not returned are children —
cancelled, silently, when their form settles. Two honest ways out:
prefer letting the eval itself be the long-running work, addressed
by its id; reach for __q/compel when the work genuinely must detach.
Work that must survive the eval that started it. An eval grounds each top-level form, and tasks spawned but not returned are children — cancelled, silently, when their form settles. Two honest ways out: prefer letting the eval itself *be* the long-running work, addressed by its id; reach for `__q/compel` when the work genuinely must detach.
(detached & body)__q/compel around inline construction — the shape that actually
detaches. Compel protects what is created inside it: handed a task
you already hold, it shields only the wrapper, and the cascade that
was already coming still reaches the work. Wrapping the construction
is the whole trick, so this is a macro — it makes the inline-ness
syntactic, impossible to get wrong at the call site.
`__q/compel` around inline construction — the shape that actually detaches. Compel protects what is *created inside it*: handed a task you already hold, it shields only the wrapper, and the cascade that was already coming still reaches the work. Wrapping the construction is the whole trick, so this is a macro — it makes the inline-ness syntactic, impossible to get wrong at the call site.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |