読者です 読者をやめる 読者になる 読者になる

yy_taroのとりとめのない落書き

メインフレームの導入・設計・構築ができるぐらいの知識があったりする。

SICP始めました 7

SICP七日目

 

1.3 高階手続きによる抽象

 

少しずつLISPぽい抽象化が登場してきた。よしこのまま一気に進むかと思いきやまた問題ゾーンへなかなかすんなりは進んでくれない・・・。

 

問題1.29

 ギブ

 

問題1.30

(define (sum term a next b)
 (define (iter a result)
  (if ( > a b)
   result
   (iter (next a) (+ result (term a) ) ) ) )
 (iter a 0) )

 

問題1.31

a

(define (product term a next b)
 (if ( > a b)
  1
  (* (term a) (product term (next a) next b) ) ) )

 

b

(define (product term a next b)
 (define (iter a result)
  (if ( > a b)
   result
   (iter (next a) (* result (term a) ) ) ) )
 (iter a 1) )

 

問題1.32

a

(define (accumulate combiner null-value term a next b)
 (if ( > a b)
  null-value
  (combiner (term a) (accumulate combiner null-value term (next a) next b) ) ) )

 

b

(define (accumulate combiner null-value term a next b)
 (define (iter a result)
  (if ( > a b)
   null-value
   (iter (next a) (combiner result (term a) ) ) ) )
 (iter a null-value) )

 

問題1.33

(define (filtered-accumulate filter combiner null-value term a next b)
(if ( > a b)
  null-value
  (if (filter)
   (combiner (term a)
     (filtered-accumulate combiner null-value term (next a) next b) )

   (filtered-accumulate combiner null-value term (next a) next b) ) ) )

 

次はラムダ・・・。やっとここまで来れた。

 

 

計算機プログラムの構造と解釈[第2版]

計算機プログラムの構造と解釈[第2版]