34 lines
978 B
Scheme
34 lines
978 B
Scheme
(define (init-evaluation-environment package)
|
|
(let ((structure (reify-structure package)))
|
|
(load-structure structure)
|
|
(rt-structure->environment structure)))
|
|
|
|
(define *evaluation-environment*)
|
|
|
|
(define (set-evaluation-package! package-name)
|
|
(set! *evaluation-environment*
|
|
(init-evaluation-environment package-name)))
|
|
|
|
(define (evaluation-environment)
|
|
*evaluation-environment*)
|
|
|
|
(define (read-sexp-from-string string)
|
|
(let ((string-port (open-input-string string)))
|
|
(read string-port)))
|
|
|
|
(define (eval-string str)
|
|
(with-fatal-and-capturing-error-handler
|
|
(lambda (condition raw-continuation continuation decline)
|
|
raw-continuation)
|
|
(lambda ()
|
|
(eval (read-sexp-from-string str)
|
|
(evaluation-environment)))))
|
|
|
|
(define (eval-s-expr s-expr)
|
|
(with-fatal-and-capturing-error-handler
|
|
(lambda (condition raw-continuation continuation decline)
|
|
raw-continuation)
|
|
(lambda ()
|
|
(eval s-expr (evaluation-environment)))))
|
|
|