linker.scm 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. ; Part of Scheme 48 1.9. See file COPYING for notices and license.
  2. ; Authors: Richard Kelsey, Jonathan Rees
  3. (define (link-simple-system filename resumer-exp . structs)
  4. (link-system structs (lambda () resumer-exp) filename))
  5. (define (link-reified-system some filename make-resumer-exp . structs)
  6. (link-system (append structs (map cdr some))
  7. (lambda ()
  8. (display "Reifying") (newline)
  9. `(,make-resumer-exp
  10. (lambda ()
  11. ,(reify-structures some
  12. (lambda (loc) loc)
  13. `(lambda (loc) loc)))))
  14. filename))
  15. (define (link-system structs make-resumer filename)
  16. (for-each ensure-loaded structs)
  17. (let* ((p (make-simple-package structs eval #f))
  18. (r (eval (make-resumer) p)))
  19. ;; (check-package p)
  20. r))
  21. ;(define (check-package p)
  22. ; (let ((names (undefined-variables p)))
  23. ; (if (not (null? names))
  24. ; (begin (display "Undefined: ")
  25. ; (write names) (newline)))))
  26. (define-syntax struct-list
  27. (syntax-rules ()
  28. ((struct-list name ...) (list (cons 'name name) ...))))