Code Review

Compare your solutions

    #| BEGIN (Введите свое решение) |#
(define (even? n)
  (= (remainder n 2) 0))

(define (double n)
  (+ n n))

(define (halve n)
  (/ n 2))

(define (mul-iter a b)
  (define (iter res first_mul second_mul)
    (cond ((= second_mul 0) res)
          ((even? second_mul) (iter res (double first_mul) (halve second_mul)))
          (else (iter (+ res first_mul) first_mul (- second_mul 1)))))
  (iter 0 a b))

#| END |#