reinitializer.scm 652 B

12345678910111213141516171819202122232425262728
  1. ; Part of Scheme 48 1.9. See file COPYING for notices and license.
  2. ; Authors: Mike Sperber
  3. ; A record type whose only purpose is to run some code when we start up an
  4. ; image.
  5. (define-record-type reinitializer :reinitializer
  6. (make-reinitializer thunk)
  7. reinitializer?
  8. (thunk reinitializer-thunk))
  9. (define-record-discloser :reinitializer
  10. (lambda (r)
  11. (list 'reinitializer (reinitializer-thunk r))))
  12. (define-record-resumer :reinitializer
  13. (lambda (r)
  14. ((reinitializer-thunk r))))
  15. (define-syntax define-reinitializer
  16. (syntax-rules ()
  17. ((define-reinitializer name thunk)
  18. (define name
  19. (make-reinitializer thunk)))))