zlacker

[return to "Rama on Clojure's terms, and the magic of continuation-passing style"]
1. beders+uw[view] [source] 2024-10-14 09:02:44
>>nathan+(OP)
> A Rama operation does not return a value to its caller. It emits values to its continuation. This is a critical distinction, as part of what makes Rama operations more general than functions is how they can emit multiple times, not emit at all, or emit asynchronously.
◧◩
2. thom+6E[view] [source] 2024-10-14 10:26:56
>>beders+uw
Which is obviously very similar to how transducers already work in Clojure, but they still lack some of concurrency options of reducers. Getting all this on a smart, distributed runtime seems very promising.
◧◩◪
3. dig1+qR[view] [source] 2024-10-14 12:36:36
>>thom+6E
There is a library called tesser [1] (by Jepsen/Riemann author) that behaves like parallel transducers with more Clojure "native" syntax. With transducers, you have to use "comp," and with tesser, you use "->>" as you'd use with lazy functions.

Sadly, tesser is not advertised as it should; I find it much more flexible than transducers. E.g. you could parallelize tesser code over Spark/Hadoop cluster.

[1] https://github.com/aphyr/tesser

◧◩◪◨
4. aeonik+7U[view] [source] 2024-10-14 13:01:04
>>dig1+qR
See the injest library as well, I've had pretty good experience with ita performance.

https://github.com/johnmn3/injest

I can squeeze more performance out of tesser, but injest gives me a surprising boost with very little ceremony most of the time.

[go to top]