Re:All you need is call/cc (2013)
by kazinator on Wednesday August 25, 2021 @04:17PM
(#28306374)
The main reason you don't need call/cc because you already have a set of primitives that are equivalent to a Universal Turing Machine.
[ Parent
| on HN ]
Certainly adding call/cc doesn't allow you to represent more computable functions by programs. But there are plenty of internal features of programs that we're interested in, that let us meaningfully distinguish amongst programs that otherwise have the exact same observable behavior.
I like coroutines as an example here, because I have very direct experience writing programs with similar behavior in systems that either do or do not have coroutines. By far, I found the coroutine-based programs far easier to understand and extend.
Mattias Felleisen wrote the seminal paper on comparing expressive power of Turing-complete languages. It's worth a read if it's not come across your radar before!
https://homepage.cs.uiowa.edu/~jgmorrs/eecs762f19/papers/fel...
Although, Shriram Krishnamurthi's talk from two years ago on this paper might be more approachable.