diff --git a/src/ikarus.boot b/src/ikarus.boot index 024d21b..0c29f6c 100644 Binary files a/src/ikarus.boot and b/src/ikarus.boot differ diff --git a/src/libnumerics.ss b/src/libnumerics.ss index 028ed7f..191ca72 100644 --- a/src/libnumerics.ss +++ b/src/libnumerics.ss @@ -19,7 +19,7 @@ (primitive-set! 'string->flonum string->flonum) )) -(library (ikarus flonums) +(library (ikarus generic-arithmetic) (export) (import (scheme)) diff --git a/src/library-manager.ss b/src/library-manager.ss index 1678572..d10ecd8 100644 --- a/src/library-manager.ss +++ b/src/library-manager.ss @@ -1,4 +1,15 @@ +#| current-library-collection procedure + Calling (current-library-collection) returns a procedure that: + - when called with no arguments, it returns a list of the set + of + libraries in the collection. + - when called with a single argument, it adds that library to + the set of libraries in the collection. + Calling (current-library-collection f) sets the current library + collection to be the procedure f which must follow the protocol + above. +|# diff --git a/src/libsyntax.ss b/src/libsyntax.ss index 2eb2436..a952e2f 100644 --- a/src/libsyntax.ss +++ b/src/libsyntax.ss @@ -2023,25 +2023,24 @@ name imp* (rtc) (build-letrec no-source lex* rhs* body) export-subst export-env)))))))))))) - (define run-library-expander - (lambda (x) - (let-values ([(name imp* run* invoke-code export-subst export-env) - (core-library-expander x)]) - (let ([id (gensym)] - [name name] - [ver '()] ;;; FIXME - [imp* (map library-spec imp*)] - [vis* '()] ;;; FIXME - [inv* (map library-spec run*)]) - (install-library id name ver - imp* vis* inv* export-subst export-env - void ;;; FIXME - (lambda () (eval-core invoke-code))))))) - (define boot-library-expander - (lambda (x) - (let-values ([(name imp* run* invoke-code export-subst export-env) + (define (library-expander x) + (let-values ([(name imp* run* invoke-code export-subst export-env) (core-library-expander x)]) + (let ([id (gensym)] + [name name] + [ver '()] ;;; FIXME + [imp* (map library-spec imp*)] + [vis* '()] ;;; FIXME + [inv* (map library-spec run*)]) + (install-library id name ver + imp* vis* inv* export-subst export-env + void ;;; FIXME + (lambda () (eval-core invoke-code))) (values invoke-code export-subst export-env)))) + (define (boot-library-expander x) + (let-values ([(invoke-code export-subst export-env) + (library-expander x)]) + (values invoke-code export-subst export-env))) (define build-export (lambda (x) ;;; exports use the same gensym @@ -2091,7 +2090,9 @@ (unless (pair? x) (error #f "invalid expression at top-level ~s" x)) (case (car x) - [(library) (run-library-expander x)] + [(library) + (library-expander x) + (void)] [(invoke) (syntax-match x () [(_ (id** ...) ...)