commander-s/scheme/eval-environment.scm

39 lines
1.1 KiB
Scheme

(define *evaluation-environment*)
(define *evaluation-environment-name*)
(define *user-environment* #f)
(define (load-evaluation-environment package)
(let ((structure (reify-structure package)))
(load-structure structure)
(rt-structure->environment structure)))
(define (evaluation-environment-name)
(if (eq? *evaluation-environment*
*user-environment*)
(string->symbol "") ; aehm...
*evaluation-environment-name*))
(define (set-evaluation-package! package-name)
(set! *evaluation-environment*
(load-evaluation-environment package-name))
(set! *evaluation-environment-name* package-name))
(define (init-evaluation-environment! user-env)
(set-evaluation-package! user-env)
(set! *user-environment* (evaluation-environment)))
(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)
(eval (read-sexp-from-string str)
(evaluation-environment)))
(define (eval-s-expr s-expr)
(eval s-expr (evaluation-environment)))