Contact
You can reach us at tord [at] callcc [dot] seServices
We take on programming jobs, primarily in Rust, Java, Clojure, JavaScript.Products
Our products are in stealth mode for the moment, but will be announced here when they are ready.What's with the name?
CallCC takes its name from the call-with-current-continuation (abbreviated call/cc) function from the Scheme programming language. One can say that it represents the future of a computation.
Wikipedia has a fairly terse explanation here.
A simpler way to explain it is that it is a function which takes a function as an argument which it calls with the current
captured continuation. The continuation can be called as a function and the computation then continues from the point where
the continuation was captured. In the example below the continuation is stored in the local
variable k which is then bound to say-hello. When invoked again it'll start from where it was captured.
> (define say-hello
(let ((k #f)
(who ""))
(set! who (call/cc (lambda (c) (set! k c) 'world)))
(display "Hello ")
(display who)
(newline)
k))
Hello world
> (say-hello 'Tord)
Hello Tord
> (say-hello 'Sweden)
Hello Sweden