Fork me on GitHub
#ldnclj
<
2015-11-04
>
malcolmsparks00:11:10

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). "

malcolmsparks00:11:49

use core.async to compose /processes/, use promises to compose deferred values

malcolmsparks00:11:54

@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

mccraigmccraig09:11:42

@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

mccraigmccraig10:11:13

@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

agile_geek10:11:57

@mccraigmccraig: ppl keep saying that but they underestimate how ‘simple’ I am!

mccraigmccraig10:11:14

@agile_geek: keep bashing your head against it - repeated cranial bludgeoning is the one true path to enlightenment