/kernel/generator.hms

http://github.com/vito/hummus · Unknown · 20 lines · 16 code · 4 blank · 0 comment · 0 complexity · 47a2a32c8feaee8f95c0d1b73fa9f933 MD5 · raw file

  1. (provide! (generator)
  2. (defn (aux f)
  3. (define here (get-current-environment))
  4. (defn (start #ignore)
  5. (reset
  6. (lambda (p)
  7. (f (lambda (v)
  8. (shift p
  9. (lambda (k)
  10. (set! here start k)
  11. v)))))))
  12. (lambda () (start #inert)))
  13. (define quote (vau (e) #ignore e))
  14. (define generator
  15. (vau body e
  16. (eval (list aux (list* lambda (quote (yield)) body)) e))))