diff --git a/src/ikarus.boot b/src/ikarus.boot index 9718a34..f6b878e 100644 Binary files a/src/ikarus.boot and b/src/ikarus.boot differ diff --git a/src/ikarus.core.ss b/src/ikarus.core.ss index 6f180cd..b1a07a7 100644 --- a/src/ikarus.core.ss +++ b/src/ikarus.core.ss @@ -11,9 +11,6 @@ (primitive-set! 'void (lambda () (void))) - - - (primitive-set! 'integer->char (lambda (n) (unless (fixnum? n) @@ -29,23 +26,6 @@ (error 'char->integer "~s is not a character" x)) ($char->fixnum x))) - -(let () - (define fill! - (lambda (v i n fill) - (cond - [($fx= i n) v] - [else - ($vector-set! v i fill) - (fill! v ($fx+ i 1) n fill)]))) - (define make-vector - (case-lambda - [(n) (make-vector n (void))] - [(n fill) - (unless (and (fixnum? n) (fx>= n 0)) - (error 'make-vector "~s is not a valid length" n)) - (fill! ($make-vector n) 0 n fill)])) - (primitive-set! 'make-vector make-vector)) (primitive-set! 'vector-length diff --git a/src/ikarus.vectors.ss b/src/ikarus.vectors.ss new file mode 100644 index 0000000..1156a77 --- /dev/null +++ b/src/ikarus.vectors.ss @@ -0,0 +1,26 @@ + +(library (ikarus vectors) + (export make-vector) + (import + (except (ikarus) make-vector) + (only (scheme) + $fx= $fx>= $fx+ $vector-set! + $make-vector)) + + (module (make-vector) + (define fill! + (lambda (v i n fill) + (cond + [($fx= i n) v] + [else + ($vector-set! v i fill) + (fill! v ($fx+ i 1) n fill)]))) + (define make-vector + (case-lambda + [(n) (make-vector n (void))] + [(n fill) + (unless (and (fixnum? n) ($fx>= n 0)) + (error 'make-vector "~s is not a valid length" n)) + (fill! ($make-vector n) 0 n fill)]))) + + ) diff --git a/src/makefile.ss b/src/makefile.ss index 80b9c7b..4fe68da 100755 --- a/src/makefile.ss +++ b/src/makefile.ss @@ -30,6 +30,7 @@ "ikarus.records.ss" "ikarus.cxr.ss" "ikarus.strings.ss" + "ikarus.vectors.ss" "ikarus.numerics.ss" "ikarus.guardians.ss"