zlacker

[parent] [thread] 4 comments
1. pyrale+(OP)[view] [source] 2024-10-14 12:55:54
That's because CPS is the callback hell.

Promises are a mechanism that was devised to separate the composition mechanism and the function itself, much like shell pipes exist to separate the control flow from the called function.

In this article, they implement a pipe-like mechanism, that avoids having to do "traditional" CPS. That is why they say the continuation is implicit. That being said, that mechanism goes further than that, and looks very much like Haskell's do-notation which enables programmers to use functional languages in an imperative style without knowing too much of the underlying implementation.

replies(1): >>nathan+bf
2. nathan+bf[view] [source] 2024-10-14 14:44:46
>>pyrale+(OP)
The Cont monad in Haskell is only for single continuation targets and can't do branching/unification like Rama. That kind of behavior doesn't seem like it would express naturally or efficiently with just "do".
replies(2): >>pyrale+UI >>tome+uY
◧◩
3. pyrale+UI[view] [source] [discussion] 2024-10-14 17:43:12
>>nathan+bf
Yes, Rama probably isn’t semantically comparable to one single monad.

I was talking about the do notation as a way to sugar the syntax of cps monadic operations into a flat, imperative syntax. This is exactly what Rama is doing.

If you look at a tutorial of what haskell do-notations desugar into, you’ll find the same cps stuff described in this article.

◧◩
4. tome+uY[view] [source] [discussion] 2024-10-14 19:12:10
>>nathan+bf
Could you say more about what branching/unification is in this context, and how Rama supports/uses it?
replies(1): >>nathan+dZ
◧◩◪
5. nathan+dZ[view] [source] [discussion] 2024-10-14 19:17:15
>>tome+uY
Those are explained in the post starting here: https://blog.redplanetlabs.com/2024/10/10/rama-on-clojures-t...
[go to top]