racket/collects/r6rs/library-repl.ss

32 lines
835 B
Scheme

(module library-repl mzscheme
(require (all-except "library-module.ss" #%module-begin)
(prefix r6rs: "reader.ss"))
(require-for-syntax "private/uri.ss")
(provide import export indirect-export library)
(current-readtable r6rs:r6rs-readtable)
(define-syntax (library stx)
(syntax-case stx ()
[(_ name . rest)
(unless (string? (syntax-e #'name))
(raise-syntax-error
#f
"expected a string for the library name"
stx
#'name))
(let ([modname (uri->symbol (syntax-e #'name))])
#`(begin
(module #,modname (lib "library-module.ss" "r6rs")
#,(datum->syntax-object
#f
(list '#%module-begin stx)))
;; Notify module-name resolver that we defined something that
;; might otherwise be loaded.
((current-module-name-resolver) #f '#,modname #f)))])))