Code Review

Compare your solutions

    #|
  Упражнение 3.1

  Накопитель (accumulator) — это процедура, которая вызывается с одним численным аргументом и собирает
  свои аргументы в сумму. При каждом вызове накопитель возвращает сумму, которую успел накопить. Напишите
  процедуру make-accumulator, порождающую накопители, каждый из которых поддерживает свою отдельную
  сумму. Входной параметр make-accumulator должен указывать начальное значение суммы, например:

    (define A (make-accumulator 5))
    (A 10)
    15
    (A 10)
    25
|#

(#%require rackunit)

(define (make-accumulator balance)
  (define (accumulator income)
    (set! balance (+ balance income))
    balance)

  accumulator)

(define acc1 (make-accumulator 10))
(define acc2 (make-accumulator 1000))

(check-equal? (acc1 0) 10)
(check-equal? (acc1 10) 20)
(check-equal? (acc1 10) 30)
(check-equal? (acc2 10) 1010)
(check-equal? (acc2 101) 1111)