;; IN: a vector, an index, a new value ;; SideEffect: inserts new value at the input index in the vector, pushes everything back, discards last element (define (vector-shift! vec index) (define (loop n) (if (= n index) 'okay (begin (vector-set! vec n (vector-ref vec (- n 1))) (loop (- n 1))))) (loop (- (vector-length vec) 1))) (define (vector-insert! vec index val) (vector-shift! vec index) (vector-set! vec index val))