Hey @leonoel another curious analogy that came to mind because of the recent release: core.async / core.async.flows. What is the correct analogy to a missionary here? I'm thinking: channels as streams or something of the sort, WDYT?
in my mental model, channels are to streams what atoms are to signals
| discrete | continuous |
----------------------------+----------+------------+
conveyor object ("port") | channel | atom |
memoized view ("publisher") | m/stream | m/signal |What are "conveyor object" and "memoized view" in this context?
Conveyor object : an object with a read/write API that is used for communication between concurrent processes. It doesn't manage any resources, has indefinite extent, can be safely garbage collected. Examples : references, channels, promises.
Memoized view : an effect with a stable identity and a sharing strategy. If multiple consumers run this effect concurrently, a single process is spawned and kept alive as long as at least one consumer is active. Examples : delay, lazy sequences (althought both are broken regarding supervision)
Where can I learn more about the differences and implications of those constructs? It is especially interesting to me in the context of reactive systems in the small (like UI) and in the large (like db & incrementaly materialized views)...