Summary: When to use what Refs Synchronous, coordinated updates, using STM Atoms Synchronous, independent updates Especially useful for memoized values Agents Introduce asynchronous concurrency Vars When you absolutely must have mutable state Remember scope is dynamic, not lexical Validator functions To maintain data integrity Watches To trigger events when an identity's value changes
{}