如何在Scheme中编写将两个序列交织成一个序列的过程

如何在Scheme中编写将两个序列交织成一个序列的过程,scheme,racket,sequence,Scheme,Racket,Sequence,在我们的考试中,我们必须编写一个显示序列前20个元素的过程,以及一个接受2个序列并以过程的形式返回一个序列的过程。我为前20个元素编写了一个显示序列的过程,但我不知道如何使第二个过程将两个序列交织在一起。我希望你能给我一些建议 (define (display-sequence seq) (letrec ((iter (lambda (seq i j) (if (= i j) (dis

在我们的考试中,我们必须编写一个显示序列前20个元素的过程,以及一个接受2个序列并以过程的形式返回一个序列的过程。我为前20个元素编写了一个显示序列的过程,但我不知道如何使第二个过程将两个序列交织在一起。我希望你能给我一些建议

(define (display-sequence seq)
      (letrec ((iter (lambda (seq i j)
                       (if (= i j)
                           (display "...")
                           (begin (display (seq i))
                                  (display ", ")
                                  (iter seq (+ 1 i) j))))))
        (iter seq 0 20)))

(define (seq-interleave seq1 seq2)
  (lambda (n)
    (if (even? n)
        (seq1 n)
        (seq2 n))))
当调用这两个过程时,应该输出这个值

(display-sequence (seq-interleave sqr (lambda (n) 5)))  
0, 5, 1, 5, 4, 5, 9, 5, 16, 5, 25, 5, 36, 5, 49, 5, 64, 5, 81, 5, ... 

我们只需要将偶数映射回整数序列中相应的数字,例如:2->1,4->2,6->3等等,对奇数做类似的操作。以下是方法:

(define (seq-interleave seq1 seq2)
  (lambda (n)
    (if (even? n)
        (seq1 (/ n 2))
        (seq2 (/ (+ n 1) 2)))))

我们只需要将偶数映射回整数序列中相应的数字,例如:2->1,4->2,6->3等等,对奇数做类似的操作。以下是方法:

(define (seq-interleave seq1 seq2)
  (lambda (n)
    (if (even? n)
        (seq1 (/ n 2))
        (seq2 (/ (+ n 1) 2)))))