Skip to content

Instantly share code, notes, and snippets.

@vseloved
vseloved / generator-send.lisp
Last active May 19, 2016 07:36
Implement generator send with restarts
(define-condition generated ()
((item :initarg :item :reader generated-item)))
(defun yield (&optional item)
(restart-case (signal 'generated :item item)
(resume (&optional item) item)))
(defun send (item generator)
(let (already-triggered)
(handler-bind ((generated (lambda (e)