SICP問題3.61

定数項が1のべき級数Sに対してS \cdot X=1となるXを求めるinvert-unit-seriesを定義する
考え方は以下のとおり
S \cdot X = 1
(1+S_{R})\cdot X = 1
X+S_{R}\cdot X = 1
X=1-S_{R}\cdot X
ということで、相変わらず分からないが、言われるままに定義

(define (invert-unit-series s)
  (let ((sr (stream-cdr s)))
    (cons-stream 1
                 (stream-map - (mul-series sr (invert-unit-series s))))))

テスト

(stream-ref (invert-unit-series ones) 0)
; 1
(stream-ref (invert-unit-series ones) 1)
; -1
(stream-ref (invert-unit-series ones) 2)
; 0
(stream-ref (invert-unit-series ones) 3)
; 0
(stream-ref (invert-unit-series ones) 4)
; 0

(stream-ref (invert-unit-series integers) 0)
; 1
(stream-ref (invert-unit-series integers) 1)
; -2
(stream-ref (invert-unit-series integers) 2)
; 1
(stream-ref (invert-unit-series integers) 3)
; 0
(stream-ref (invert-unit-series integers) 4)
; 0

OK?