Ваш код такой (я применил отступ, чтобы сделать скобки более четкими):
(define (stream f fx x)
(let ((x (3))
((f x) (sin x))
((fx x) (cos x)))
(cons-stream (x (stream f fx (x (- x (/ (f x) (fx x))))
))
)))
(stream f fx 3)
В этом есть несколько ошибок:
(3)
лакомства3 как процедура и пытается ее вызвать.Вместо этого у вас должно быть 3
. - Вы указали конкретные аргументы 3, sin, cos внутри общей функции.Вместо этого он должен быть снаружи.
- Вы сделали
(x (stream ...))
и (x (- x ..))
, и оба трактуют x как функцию, но это число.
Так что исправьте эти ошибки, кодбудет больше похоже на это:
(define (stream f fx x)
(cons-stream x (stream f fx (- x (/ (f x) (fx x))))))
(let ((x 3)
(f (lambda (x) (sin x)))
(fx (lambda (x) (cos x))))
(stream f fx x))
лямбда была использована для определения локальной функции.Надеюсь, что это поможет, не стесняйтесь задавать дополнительные вопросы, если что-то неясно.