Skip to content

Instantly share code, notes, and snippets.

@nkoguro
Created Jun 1, 2020
Embed
What would you like to do?
(use data.queue)
(use gauche.partcont)
(define queue (make-queue))
(define (wrap thunk)
(lambda ()
(guard (e (else (print "catch!")
(raise e)))
(reset
(thunk)))))
(define (yield)
(shift cont
(enqueue! queue (wrap cont))))
(define (main args)
(enqueue! queue (wrap (lambda ()
(let1 counter 0
(while #t
(inc! counter)
(when (= counter 10)
(error "err"))
(yield))))))
(while #t
(let1 next (dequeue! queue #f)
(when next
(next))))
0)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment