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