Skip to content

Instantly share code, notes, and snippets.

@nkoguro

nkoguro/pcdemo6.scm Secret

Last active 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)))
'end-of-wrap))
(define (yield)
(shift cont
(enqueue! queue (wrap cont))
'end-of-shift))
(define (main args)
(enqueue! queue (wrap (lambda ()
(let1 counter 0
(while #t
(inc! counter)
(when (= counter 10000)
(set! counter 0)
(format #t "~s~%" (gc-stat)))
(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