ストリームの最初の 6 つの要素を取得する場合、(1 1) (1 2) (1 3) (2 2) (2 3) (3 3) のようなペアの出力を生成しようとしています。(最初の 6 列には 3 つの列があり、1 から始まり、次に 2、次に 3 のペアを出力する必要があります。) 私が持っているコードは次のとおりです。
(define (pairs s t)
(cons-stream (cons (stream-car s) (stream-car t))
(cons-stream
(stream-map (lambda (x) (cons (stream-car s) x))
(stream-cdr t))
(pairs (stream-cdr t) (stream-cdr s)))))
そして、私が走れば
(take 6 (pairs integers integers))
take と integer は次のように定義されます。
(define (take n s)
(if (= n 0)
'()
(cons (stream-car s) (take (- n 1) (stream-cdr s)))))
(define integers (cons-stream 1 (add-streams ones integers)))
私が得る結果は次のとおりです。
((1 . 1)
((1 . 2) . #<promise>)
(2 . 2)
((2 . 3) . #<promise>)
(3 . 3)
((3 . 4) . #<promise>))