ldnclj

Find us on #clojure-uk
malcolmsparks 2015-11-04T00:00:10.000664Z

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

malcolmsparks 2015-11-04T00:00:49.000665Z

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

malcolmsparks 2015-11-04T00:12:54.000666Z

@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

mccraigmccraig 2015-11-04T09:23:42.000667Z

@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

thomas 2015-11-04T09:57:41.000668Z

morning

mccraigmccraig 2015-11-04T10:37:13.000670Z

@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_geek 2015-11-04T10:41:57.000671Z

@mccraigmccraig: ppl keep saying that but they underestimate how โ€˜simpleโ€™ I am!

mccraigmccraig 2015-11-04T10:44:14.000672Z

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

๐Ÿ‘ 1
agile_geek 2015-11-04T10:44:34.000673Z

๐Ÿ˜„

thomas 2015-11-04T11:18:28.000674Z

lol