Процедура display
записывает в вывод и затем возвращает неопределенное значение. Вы используете display
для побочного эффекта печати данных, а не для его возвращаемого значения.
(define (avg List)
(cond ((string=? "std" (car (split List)))
(display (/ (examTotals List) 3.0)))
(else 0)))
Процедура avg
возвращает значение последнего вычисленного выражения; когда вычисляется ветвь display
, неуказанное значение возвращается вызывающей стороне. Но вызывающему абоненту printEmp
не нужно avg
для отображения результатов, ему нужно только возвращаемое значение, которое затем печатается с помощью процедуры printEmp
.
Исправьте, удалив display
из avg
процедура:
(define (avg List)
(cond ((string=? "std" (car (split List)))
(/ (examTotals List) 3.0))
(else 0)))