Skip to content

Comment on Continuations by example: Exceptions, time-traveling search, threads, and more

Comments

I always start Matt Might articles thinking "Okay, THIS is the one I'm going to understand all the way to the very end without unlearning what I just read, else I die," and alas, I have again died.

I'm having an ADHD night and I had the same thought, except I haven't died yet. Felt like giving up three times already, but I did have a click moment after playing around with a scheme repl for a couple of minutes. I understand the first example of call/cc now!

  (display
    (call/cc (lambda (cc)
              (display "I got here.\n")
              (cc "This string was passed to the continuation.\n")
              (display "But not here.\n"))))
Edit: Tried playing around with mit-scheme, but it doesn't work with the ctrl-v'ing the examples. Chezscheme does work.

It seems that MIT-Scheme needs the cc function to be a function of 1 argument (the return value for the continuation)[0]

Changing it to the following should work:

  (let ((start #f))
    (if (not start)
      (call/cc (lambda (cc)
                 (set! start cc))))
  
    (display "Going to invoke (start)\n")
    
    (start #f))
[0] https://www.gnu.org/software/mit-scheme/documentation/stable...

For what it's worth, almost any time Matt writes about Scheme he's likely using Racket so it'd be worth trying that for his posts!

Me to. Level failed, but then i found this cheat code from apache and at lest i now understand basics.

http://commons.apache.org/sandbox/commons-javaflow/

AFAIK Javaflow's been inactive for over a decade. Newer implementations for the same concept include https://github.com/offbynull/coroutines and https://github.com/vsilaev/tascalate-javaflow/.

Full disclosure: I'm the one who built / owns the first project.

On the topic of inactive continuation implementations for Java: I implemented native support for both delimited (shift/reset) and non-delimited (call/cc) continuations in the Avian JVM. See https://github.com/ReadyTalk/avian/blob/master/test/extra/Co... for some mind-bending examples.

Love it. Lmk if you never need a hand. I was on the core analysis team at Fortify.

Thanks for sharing this background and cool project.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.