Вы можете вызывать любую понравившуюся процедуру из любой другой процедуры.
Вы неправильно набираете count-balls
.Требуется только 2 аргумента, но вы вызываете его с 11 аргументами.Вам нужно написать отдельные вызовы для каждого цвета, а не помещать их все в один вызов.И вам нужно обернуть это при вызове list
, чтобы создать список всех результатов.
(define (color-count bucket)
(list (count-balls 'R bucket)
(count-balls 'G bucket)
(count-balls 'B bucket)
(count-balls 'W bucket)))
Вы также можете использовать функцию map
, чтобы удалить весь повторяющийся код:
(define (color-count bucket)
(map (lambda (color) (count-balls color bucket))
'(R G B W)))
map
вызывает процедуру несколько раз с каждым элементом списка (R G B W)
в качестве аргумента и возвращает список всех результатов.