(define factorial (lambda (n) (do ((i 1 (+ i 1)) (fact 1 (* fact i))) ((> i n) fact)))) (define sum-of-digits (lambda (n) (do ((n n (quotient n 10)) (result 0 (+ result (remainder n 10)))) ((zero? n) result)))) ;; return a vector of the same length as the input vector v ;; but having values equal to 1/2 of corresponding element in v ;; e.g. #(2 4 6) => #(1 2 3) (define half (lambda (v) (do ((w (make-vector (vector-length v))) (i 0 (+ i 1))) ((= i (vector-length v)) w) (vector-set! w i (/ (vector-ref v i) 2))))) ;; return a vector containing the reverse of the input vector by Colin Smith (define reverse (lambda (v) (let ((w (make-vector (vector-length v))) (length (vector-length v))) (do ((i (- length 1) (- i 1))) ((negative? i) w) (vector-set! w (- length (+ i 1)) (vector-ref v i))))))