missionary

2025-01-17T11:35:00.419889Z

https://github.com/clojure/core.async/blob/master/doc/flow.md Very interesting, Hickey cooking on core.async

leonoel 2025-01-19T11:34:51.655819Z

> The fundamental objective of core.async.flow is to enable a strict separation of your application logic from its topology, execution, communication, lifecycle, monitoring and error handling This goal is the strict opposite of missionary's hypothesis, i.e. all of these concerns should be unified because they're the exact same thing

2025-01-19T12:02:03.238419Z

So the exact same thing in the sense that topology, execution, communication, lifecycle are inherently tied to application logic?

leonoel 2025-01-19T12:02:36.146119Z

yes

2025-01-19T12:09:02.022899Z

I can see that yes, it feels missionary is more comprehensive, giving more abstractions while keeping intact things like try-catch reasoning on a code-local level all the while giving backpressure strategy gaurantees over complex and dynamic flow topologies. Rich has stated that dynamicity is less of a goal (but still work in progress).

2025-01-19T12:12:51.960609Z

Hickey mentioned it's easy to get into a mutable mess when adding dynamic flows in the mix, but I'm guessing a lot of that mutable mess is things that missionary hides from the user. It does seem to me that the learning curve for core.async.flow is substantially lower than learning to write proper missionary though.

leonoel 2025-01-19T18:56:19.453449Z

Rich is right - proper specification of dynamic topologies is a tough problem. Everything is simpler in the static case, so it makes sense he decided to focus on that, assuming it fits his problem space (which he's still vague about, but e.g. he clearly didn't mention UI)