問題3.56 – SICP(計算機プログラムの構造と解釈)その150
2009年04月09日
問題3.56
;; stream の最初の n 個の要素を印字する手続き (define (stream-head s n) (define (iter s n) (if (<= n 0) 'done (begin (display (stream-car s)) (newline) (iter (stream-cdr s) (- n 1))))) (iter s n)) (define (merge s1 s2) (cond ((stream-null? s1) s2) ((stream-null? s2) s1) (else (let ((s1car (stream-car s1)) (s2car (stream-car s2))) (cond ((< s1car s2car) (cons-stream s1car (merge (stream-cdr s1) s2))) ((> s1car s2car) (cons-stream s2car (merge s1 (stream-cdr s2)))) (else (cons-stream s1car (merge (stream-cdr s1) (stream-cdr s2))))))))) (define S (cons-stream 1 (merge (scale-stream S 2) (merge (scale-stream S 3) (scale-stream S 5))))) ;; 実行結果 (stream-head S 10) gosh> 1 2 3 4 5 6 8 9 10 12 done
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542