0

2 つのストリームを取り、それらのペアをまとめてインターリーブする手順を作成しようとしています。現在、正しい出力が生成されていません。ここに私が持っているコードがあります:

(define (interleave-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))
               (interleave-pairs t (stream-cdr s)))))

値を取得するために、私は手順を書きました:

(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)))

だから私が電話するとき

(take 6 (pairs integers integers))

私は得ています:

((1 . 1)
((1 . 2) . #<promise>)
(1 . 2)
((1 . 3) . #<promise>)
(2 . 2)
((2 . 3) . #<promise>))

(1 1) (1 1) (1 2) (1 3) (2 2) (2 3)

4

1 に答える 1