Ошибка в последней строке sum-of-prefixes-b
. Должно быть:
(sum-of-prefixes-b (+ sum (car lat)) (cdr lat) (cons sum result))))))
вместо:
(sum-of-prefixes-b (+ sum (car lat)) (cdr lat) (cons (sum result)))))))
(sum result)
интерпретируется как применение sum
к result
, но sum
не является функцией, это переменная со значением 0
.
И, возможно, вам следует изменить ((null? lat) result)
в ((null? lat) (reverse result))
, если вы хотите, чтобы суммы префиксов были в том же порядке, что и список, при условии, что я правильно понял значение функции. В этом случае я думаю, что вы также должны изменить вторую ветвь условия первой функции.