29 lines
1.0 KiB
Scheme
29 lines
1.0 KiB
Scheme
(module util mzscheme
|
|
(provide make-module-eval
|
|
make-eval/mod-path)
|
|
|
|
(define-syntax (make-module-eval m-expr)
|
|
(syntax-case m-expr (module)
|
|
[(_ (module m-id . rest))
|
|
#'(let ([ns (make-namespace)])
|
|
(parameterize ([current-namespace ns])
|
|
(eval '(require (lib "abort-resume.ss" "web-server" "lang")
|
|
(lib "serialize.ss")))
|
|
(eval '(module m-id . rest))
|
|
(eval '(require m-id)))
|
|
|
|
(lambda (s-expr)
|
|
(parameterize ([current-namespace ns])
|
|
(eval s-expr))))]
|
|
[else
|
|
(raise-syntax-error #f "make-module-evel: dropped through" m-expr)]))
|
|
|
|
(define (make-eval/mod-path pth)
|
|
(let ([ns (make-namespace)])
|
|
(parameterize ([current-namespace ns])
|
|
(eval `(require (lib "abort-resume.ss" "web-server" "lang")
|
|
(lib "serialize.ss")
|
|
,pth)))
|
|
(lambda (expr)
|
|
(parameterize ([current-namespace ns])
|
|
(eval expr)))))) |