Fork me on GitHub

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!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


@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