30 lines
802 B
Scheme
30 lines
802 B
Scheme
(define-library (scheme eval)
|
|
(import (scheme base))
|
|
|
|
(define (null-environment n)
|
|
(if (not (= n 5))
|
|
(error "unsupported environment version" n)
|
|
'(scheme null)))
|
|
|
|
(define (scheme-report-environment n)
|
|
(if (not (= n 5))
|
|
(error "unsupported environment version" n)
|
|
'(scheme r5rs)))
|
|
|
|
(define environment
|
|
(let ((counter 0))
|
|
(lambda specs
|
|
(let ((library-name `(picrin @@my-environment ,counter)))
|
|
(set! counter (+ counter 1))
|
|
(eval
|
|
`(define-library ,library-name
|
|
,@(map (lambda (spec)
|
|
`(import ,spec))
|
|
specs))
|
|
'(scheme base))
|
|
library-name))))
|
|
|
|
(export null-environment
|
|
scheme-report-environment
|
|
environment))
|