【SICP练习】139 练习3.70
练习3-70
原文
代码
(define (merge-weighted s1 s2 weight)
(cond ((stream-null? s1) s2)
((stream-null? s2) s1)
(else
(let ((cars1 (stream-car s1))
(cars2 (stream-car s2)))
(cond ((< (weight cars1) (weight cars2))
(cons-stream cars1
(merge-weighted (stream-cdr s1) s2 weight)))
((= (weight cars1) (weight cars2))
(cons-stream cars1
(merge-weighted (stream-cdr s1) s2 weight)))
(else (cons-stream cars2
(merge-weighted s1 (stream-cdr s2)
weight))))))))
(define (weighted-pairs s1 s2 weight)
(cons-stream (list (stream-car s1) (stream-car s2))
(merge-weighted (stream-map (lambda (x) (list (stream-car s1)
x))
(stream-cdr s2))
(weighted-pairs (stream-cdr s1) (stream-cdr
s2)
weight)
weight)))
(define weight1 (lambda (x) (+ (car x) (cadr x))))
(define pairs1 (weighted-pairs integers integers weight1))
(define weight2 (lambda (x) (+ (* 2 (car x)) (* 3 (cadr x)) (* 5 (car x)
(cadr x)))))
(define (divide? x y) (= (remainder y x) 0))
(define stream235 (stream-filter (lambda (x) (not (or (divide? 2 x)
(divide? 3 x)
(divide? 5 x))))
integers))
(define pairs2 (weighted-pairs stream235 stream235 stream235 weight2))
感谢您的访问,希望对您有所帮助。 欢迎大家关注或收藏、评论或点赞。
为使本文得到斧正和提问,转载请注明出处:
http://blog.csdn.net/nomasp
版权声明:本文为 NoMasp柯于旺 原创文章,如需转载请联系本人。