ikarus/src/ikarus.vectors.ss

34 lines
835 B
Scheme
Raw Normal View History

(library (ikarus vectors)
(export make-vector vector-length)
(import
(except (ikarus) make-vector vector-length)
(only (scheme)
$fx= $fx>= $fx+ $vector-set!
$make-vector $vector-length))
(define vector-length
(lambda (x)
(unless (vector? x)
(error 'vector-length "~s is not a vector" x))
($vector-length x)))
(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)])))
)