問題2.33 – SICP(計算機プログラムの構造と解釈)その47

問題2.33

アキュムレータ手続き

(define (accumulate op initial sequence)
  (if (null? sequence)
      initial
      (op (car sequence)
          (accumulate op initial (cdr sequence)))))

map の定義

SICP問題2.33 mapの定義

(define (map p sequence)
  (accumulate (lambda (x y) (cons (p x) y)) () sequence))

(map square (list 1 2 3 4 5))
gosh> (1 4 9 16 25)

append の定義

SICP問題2.33 appendの定義

(define (append seq1 seq2)
  (accumulate cons seq2 seq1))

(append (list 1 2) (list 3 4))
gosh> (1 2 3 4)

length の定義

SICP問題2.33 lengthの定義

(define (length sequence)
  (accumulate (lambda (x y) (+ 1 y)) 0 sequence))

(length (list 1 2 3 4 5))
gosh> 5
計算機プログラムの構造と解釈
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
«
»