Fork me on GitHub
#missionary
<
2023-08-11
>
Bhougland15:08:13

I ran across this project recently and it looks interesting. What would be the best way to get up to speed on reactive programming for a beginner? I was thinking about reading "Hands on Reactive Programming for Clojure (and the Python version) to understand Rx, and it appears that they are similar. It seems like a user of this project would need to have a good base of understanding before diving into this. Is that assumption correct? Also, would it be possible to port the library to ClojureDart, or would Dart's "isolates" prevent using it in that language without a major overhaul of the code?

Dustin Getz17:08:35

might be easier to play with Electric Clojure first (due to lighter learning curve) and then switch to missionary from there

Bhougland17:08:15

I plan on looking into Electric Clojure, it looks incredible. However, would understanding Electric Clojure help understanding reactive programming, or does Electric obscure how it works under the hood?

Dustin Getz17:08:29

Electric in the single-node case has a simple and straightforward translation to missionary continuous flows, which is imo the right entrypoint to missionary

Bhougland18:08:34

Last question, do you think there is value in learning Rx to jumpstart my learning (considering there is a lot of learning materials i.e. books, videos, etc)? Or would that just be a rabbit hole that would likely distract me from learning a "better" FRP framework?

leonoel18:08:25

Prior knowledge of another functional effect system like Rx can help, because it's the same paradigm. The hard part of the learning journey is to unlearn your old habits and shift your mindset from imperative to functional. However, I do not recommend learning Rx before missionary because a lot of learning time will be wasted on the vocabulary. Also Rx doesn't cover continuous time which is an essential feature of FRP.

leonoel18:08:35

regarding dart - according to my limited knowledge I don't see any technical blocker porting missionary to this platform and I support any effort in that direction. If I understand correctly there is no shared memory in dart (yet ? https://github.com/dart-lang/language/issues/333) which means all reactions will be bound to a single isolate, but missionary can still be useful under these constraints, in the same way it's useful under the single threaded model constraint on the browser.