Fork me on GitHub
#missionary
<
2021-07-31
>
ribelo18:07:16

What can I read beyond the tutorials that will help me understand missionary?

leonoel20:07:35

The whole API is not huge, I would suggest to read the docstrings of the single namespace if you haven't already. Also check the beta announcement https://clojureverse.org/t/missionary-new-release-with-streaming-support-design-notes/4510 There's room for improvement in the documentation and suggestions are welcome. If you have more specific questions, feel free to ask here.

ribelo00:08:24

api is not big, but it is not understandable. i.e., not because it is not readable, but it is expertly

ribelo00:08:48

I would love to get more information to better understand what is going on, I just lack the basics and don't know where to go for it

ribelo07:08:08

even though I'm not familiar with RxJava, the text gave me a lot, which I had previously avoided https://github.com/leonoel/missionary/blob/master/doc/tutorials/rx_comparison.md

ikitommi19:07:21

how does missionary compare to Scala-libs like ZIO and Cats Effects?

leonoel20:07:56

Tasks serve the same purpose as the IO type in ZIO and Cats Effect, and AFAIK the feature set is pretty much the same. The main difference is how sequential composition is done. While scala frameworks reimplement the language with additional operators, using flatMap and for-notation for basic sequencing, missionary uses a single operator sp supporting the entire clojure language, including macros, such that all the patterns that work in synchronous style still work in asynchronous style. It also implies that support for unbounded recursion is not really a goal in missionary because it's already an antipattern in standard clojure (use loop/recur instead). Regarding performance, I can't say anything because I haven't done any work in this direction yet !

👍 6
Dustin Getz20:07:26

missionary task (m/sp, seqential process) is roughly ZIO https://zio.dev/docs/datatypes/core/zio - a value representing a recipe that describes a workflow or job, analogous to haskell IO action missionary m/ap (discrete flow) is roughly ZStream https://zio.dev/docs/datatypes/stream/zstream - a value representing a workflow or job that eagerly publishes multiple values

👍 6
Dustin Getz20:07:21

i dont know of any ZIO type that represents continuous signal (which is the type needed for spreadsheet computations as well as react-like rendering with work skipping)

Dustin Getz20:07:55

Can someone summon the logbot, i don't remember how it works

leonoel20:07:56

Tasks serve the same purpose as the IO type in ZIO and Cats Effect, and AFAIK the feature set is pretty much the same. The main difference is how sequential composition is done. While scala frameworks reimplement the language with additional operators, using flatMap and for-notation for basic sequencing, missionary uses a single operator sp supporting the entire clojure language, including macros, such that all the patterns that work in synchronous style still work in asynchronous style. It also implies that support for unbounded recursion is not really a goal in missionary because it's already an antipattern in standard clojure (use loop/recur instead). Regarding performance, I can't say anything because I haven't done any work in this direction yet !

👍 6