Проблема заключается в этой части:
(first team)
Первая команда - это список из двух элементов, идентификатора и подсписка, и мы хотим добавить все элементы вэтот подсписок.Вот как:
(define (getEmpTotals team)
(if (empty? team)
0
(+ (apply + (first (rest (first team))))
(getEmpTotals (rest team)))))
Часть (first (rest (first team)))
можно упростить до (cadar team)
.И (apply + ...)
добавляет все элементы в подсписок.
В качестве другой альтернативы мы можем использовать процедуры более высокого порядка для написания более идиоматического решения:
(define (getEmpTotals team)
(foldl (λ (t acc) (+ (apply + (cadr t)) acc))
0
team))
В любом случае,работает как положено:
(getEmpTotals team)
=> 2745