This is copied to the Gambit mail list (as was the original message).
On May 10, 2007, at 8:32 PM, Marc Feeley wrote:
And what makes you think it is OK to
(define (##vector-copy v) (let* ((n (vector-length v)) (result (make-vector n))) (do ((i (- n 1) (- i 1))) ((< i 0) result) (vector-set! result i (vector-ref v i)))))
"##vector-copy" is supposed to accept any vector-like object as argument, including structures such as readtables. Just chuck that definition.
So how am I supposed to know that ##vector-copy has been defined somewhere in the gambit runtime? In the main gambc-4.0b22 directory I see
euler-7% grep -r vector-copy `find . -name '*.scm'` ./gsc/_gvm.scm: (left-to-schedule (stretchable-vector-copy (bbs-basic-blocks bbs)))) ./gsc/_utils.scm:(define (stretchable-vector-copy sv) ./gsc/_utils.scm:(define (stretchable-vector-copy sv) ./lib/_eval#.scm: '(##vector (##vector-copy ##step-handlers) ./lib/_io.scm: (let ((copy (##vector-copy rt))) ./lib/_io.scm: (##vector-copy obj)) ./lib/gambit#.scm:f32vector-copy ./lib/gambit#.scm:f64vector-copy ./lib/gambit#.scm:s16vector-copy ./lib/gambit#.scm:s32vector-copy ./lib/gambit#.scm:s64vector-copy ./lib/gambit#.scm:s8vector-copy ./lib/gambit#.scm:u16vector-copy ./lib/gambit#.scm:u32vector-copy ./lib/gambit#.scm:u64vector-copy ./lib/gambit#.scm:u8vector-copy ./lib/gambit#.scm:vector-copy
I presume that there's some macro somewhere that expands to a definition of ##vector-copy. Perhaps the compiler should remark if (standard-bindings) or (extended-bindings) are declared and a standard or gambit-specific function is (re-)defined in a user file.
Brad