; three homework problems

(define (sum vec)
  (let ((len (vector-length vec))
        (sum 0))
    (do ((i 0 (+ i 1))) ((= i len) sum)
      (set! sum (+ sum (vector-ref vec i))))))

(display (sum '#(4 9 1 8 3 2 6))) (newline)

(define (reverse! vec)
  (let ((len (vector-length vec)))
    (do ((lo 0 (+ lo 1))
         (hi (- len 1) (- hi 1)))
        ((<= hi lo) vec)
      (let ((temp (vector-ref vec lo)))
        (vector-set! vec lo (vector-ref vec hi))
        (vector-set! vec hi temp)))))

(display (reverse! '#(4 9 1 8 3 2 6))) (newline)

(define (sort! vec)
  (let ((len (vector-length vec)))
    (do ((i 0 (+ i 1))) ((= i len) vec)
      (do ((j i (- j 1)))
          ((or (zero? j)
               (<= (vector-ref vec (- j 1))
                   (vector-ref vec j))))
        (let ((temp (vector-ref vec j)))
          (vector-set! vec j (vector-ref vec (- j 1)))
          (vector-set! vec (- j 1) temp))))))

(display (sort! '#(4 9 1 8 3 2 6))) (newline); your code goes here