(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))