(define-library (scheme eval)
  (import (picrin base))

  (define counter 0)

  (define-syntax (inc! n)
    #`(set! #,n (+ #,n 1)))

  (define (number->symbol n)
    (string->symbol (number->string n)))

  (define (environment . specs)
    (let ((library-name `(picrin @@my-environment ,(number->symbol counter))))
      (inc! counter)
      (let ((lib (make-library library-name)))
        (eval `(import ,@specs) lib)
        lib)))

  (export environment eval))