this is a really nice sentence from andrey: "Personally, I use core.async to compose different processes, but when I interacting with async apis I almost always use promise abstraction with cats sugar syntax. The promise abstraction semantics fits more properly in async rpc calls that channels because it represents a "eventually available value" and has the notion of error (unlikely core.async channels). "
use core.async to compose /processes/, use promises to compose deferred values
@jonpither: latest core.async has a thing called promise-chans that make it easier to code these one-shot channels if you're going to suggest it https://groups.google.com/forum/#!topic/clojure/NdQMUs1mTUU
@malcolmsparks: let-flow is more similar to cats' alet - mlet steps are sequential, where's alet allows for parallelism like let-flow... perhaps the nicest thing about both alet & mlet is that they are generic - you can use the same composition abstraction with promesa promises, core.async channels, manifold deferreds, core.async promises (not implemented yet, but no reason why not) - i find it helps a lot with code comprehension
morning
@agile_geek: the applicative/monad thing is simpler than you think - my experience was that all the tutorials/explanations are mostly useless compared with a couple of hours of playing with the damned things
@mccraigmccraig: ppl keep saying that but they underestimate how โsimpleโ I am!
@agile_geek: keep bashing your head against it - repeated cranial bludgeoning is the one true path to enlightenment
๐
lol