~ chicken-core (chicken-5) 847b172baf18178b1d87fdb57d0d13b213c62607
commit 847b172baf18178b1d87fdb57d0d13b213c62607 Author: Evan Hanson <evhan@foldling.org> AuthorDate: Sat Jun 17 12:32:20 2017 +1200 Commit: Peter Bex <peter@more-magic.net> CommitDate: Sun Jun 18 15:19:55 2017 +0200 Move `module-environment' into chicken.eval To align more closely with R7RS's library organisation, we put the `module-environment' procedure in the "chicken.eval" module. Also, drop the [undocumented] second argument from the user-facing version of this procedure, and remove it from the plain "chicken" module. The dropped argument is still used internally, but doesn't need to be part of the public API. Signed-off-by: Peter Bex <peter@more-magic.net> diff --git a/chicken.import.scm b/chicken.import.scm index 3ebc9c9d..3b20bb7a 100644 --- a/chicken.import.scm +++ b/chicken.import.scm @@ -130,7 +130,6 @@ make-parameter make-promise (make-property-condition . chicken.condition#make-property-condition) - module-environment (most-negative-fixnum . chicken.fixnum#most-negative-fixnum) (most-positive-fixnum . chicken.fixnum#most-positive-fixnum) nan? diff --git a/eval.scm b/eval.scm index 8167774f..2c62136e 100644 --- a/eval.scm +++ b/eval.scm @@ -45,8 +45,10 @@ <# (module chicken.eval - (eval eval-handler - interaction-environment null-environment scheme-report-environment) + (eval-handler module-environment + + ;; TODO These should only be exported by the scheme module (and r4rs/r5rs): + eval interaction-environment null-environment scheme-report-environment) ;; Exclude bindings defined within this module. (import (except scheme eval interaction-environment null-environment scheme-report-environment) @@ -752,6 +754,12 @@ (apply (eval-handler) x env)) +;;; User-facing `module-environment` procedure: + +(define (module-environment name) + (chicken.module#module-environment name)) + + ;;; Setting properties dynamically scoped (define-values (##sys#put/restore! ##sys#with-property-restore) @@ -812,10 +820,10 @@ (define scheme-report-environment) (define null-environment) -(let* ((r4s (module-environment 'r4rs 'scheme-report-environment/4)) - (r5s (module-environment 'scheme 'scheme-report-environment/5)) - (r4n (module-environment 'r4rs-null 'null-environment/4)) - (r5n (module-environment 'r5rs-null 'null-environment/5))) +(let* ((r4s (chicken.module#module-environment 'r4rs 'scheme-report-environment/4)) + (r5s (chicken.module#module-environment 'scheme 'scheme-report-environment/5)) + (r4n (chicken.module#module-environment 'r4rs-null 'null-environment/4)) + (r5n (chicken.module#module-environment 'r5rs-null 'null-environment/5))) (define (strip se) (foldr (lambda (s r) diff --git a/modules.scm b/modules.scm index 0b818904..637eda0c 100644 --- a/modules.scm +++ b/modules.scm @@ -1057,7 +1057,7 @@ (register-feature! 'module-environments) -(define (module-environment mname #!optional (ename mname)) +(define (chicken.module#module-environment mname #!optional (ename mname)) (let ((mod (find-module/import-library mname 'module-environment))) (if (not mod) (##sys#syntax-error-hook diff --git a/tests/environment-tests.scm b/tests/environment-tests.scm index 285ad65e..61f50f03 100644 --- a/tests/environment-tests.scm +++ b/tests/environment-tests.scm @@ -33,6 +33,8 @@ (test-equal 1 (eval '(if #t 1 2) (null-environment 5))) (test-equal (eval '((lambda (x) x) 123) (null-environment 5)) 123) +(import (chicken eval)) + (define baz 100) (module foo (bar) diff --git a/tests/module-tests.scm b/tests/module-tests.scm index 421560e6..e6969e76 100644 --- a/tests/module-tests.scm +++ b/tests/module-tests.scm @@ -1,5 +1,6 @@ ;;;; module-tests.scm +(import (chicken eval)) (cond-expand (compiling diff --git a/types.db b/types.db index 07258c46..dfc1d0bf 100644 --- a/types.db +++ b/types.db @@ -862,6 +862,8 @@ (chicken.eval#interaction-environment (#(procedure #:clean) chicken.eval#interaction-environment () (struct environment))) +(chicken.eval#module-environment + (#(procedure #:clean #:enforce) chicken.eval#module-environment ((or symbol (list-of (or symbol fixnum)))) (struct environment))) ;; chicken @@ -1266,7 +1268,6 @@ (chicken.flonum#minimum-flonum float) (chicken.fixnum#most-negative-fixnum fixnum) (chicken.fixnum#most-positive-fixnum fixnum) -(module-environment (#(procedure #:clean #:enforce) module-environment ((or symbol (list-of (or symbol fixnum))) #!optional *) (struct environment))) (on-exit (#(procedure #:clean #:enforce) on-exit ((procedure () . *)) undefined)) (open-input-string (#(procedure #:clean #:enforce) open-input-string (string #!rest) input-port)) (open-output-string (#(procedure #:clean) open-output-string (#!rest) output-port))Trap