理系学生日記

おまえはいつまで学生気分なのか

忍者TOOLS

問題 3-67 (3.5.3 Exploiting the Stream Paradigm)

上の pairs は \{(s,t)|s\leq t, s\in S, t\in T\} というものだったんだけど,今度は \{(s,t)|s\in S, t\in T\} を作る.

(define (pairs s t)
  (cons-stream
   (list (stream-car s) (stream-car t))
   (interleave
    (interleave
     (stream-map (lambda (x) (list (stream-car s) x))
                 (stream-cdr t))
     (stream-map (lambda (x) (list x (stream-car t)))
                 (stream-cdr s)))
    (pairs (stream-cdr s) (stream-cdr t)))))