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. mschae+uH[view] [source] 2024-10-14 10:58:10
>>thom+6E
> Getting all this on a smart, distributed runtime seems very promising.

Hopefully it is.

This CPS article is the first of the Rama blog posts where it seemed like there might be something there. The earlier posts - "I built Twitter scale Twitter in 10Kloc" - were never really all that convincing. The thing they claimed to have built was too ambitious a claim.

◧◩◪◨
4. thom+YK[view] [source] 2024-10-14 11:34:55
>>mschae+uH
Oh I think there’s a lot of good stuff baked in there. The big idea downstream is that you have incrementally calculated, indexed data structures to query all the results of this fancy CPS logic. It’s all slightly esoteric even coming from a Clojure background but it ticks every box I want from a modern data platform, short of speaking SQL.
[go to top]