関数型言語の勉強にSICPを読もう - (47) 3章 - 標準部品化力、オブジェクトおよび状態 (191ページ)
4章を先読みとかしているくせに、全然3章が進んでいないので反省中。
今日は問題3.50が解けるまで寝ない!と決めたらわりとすぐに解けた。
問題3.50
cons-streamや、stream-carをまだ定義していなくて、テストができないので cons/carで実装してみた。
(define (hige-map proc . argstreams) (if (null? (car argstreams)) '() (cons (apply proc (map car argstreams)) (apply hige-map (cons proc (map cdr argstreams)))))) (display (hige-map + (list 1 2 3) (list 4 5 6)))
mapに car や cdr を渡すところが思いつくのに時間のかかった部分だった。
ということで答えは↓のようになるかと。
(define (stream-map proc . argstreams) (if (null? (car argstreams)) '() (cons-stream (apply proc (map car argstreams)) (apply stream-map (cons proc (map cdr argstreams))))))
計算機プログラムの構造と解釈
posted with amazlet on 06.05.31