問題2.22 – SICP(計算機プログラムの構造と解釈)その39
2008年12月15日
問題2.22
Louis Reasoner の反復プロセスでの square-list
square
した値を cons
により結果となる answer
(リスト) に繫げていくためにリストの値の順番が反転する。
(define (square-list items) (define (iter things answer) (if (null? things) answer (iter (cdr things) (cons (square (car things)) answer)))) (iter items ())) (square-list (list 1 2 3 4)) gosh> (16 9 4 1)
cons
の引数を交換した square-list
answer
(リスト) を cons
によって square
した値に繫げるために思った結果にならない。
(define (square-list items) (define (iter things answer) (if (null? things) answer (iter (cdr things) (cons answer ; answer はリスト (square (car things)))))) (iter items ())) (square-list (list 1 2 3 4)) gosh> ((((() . 1) . 4) . 9) . 16)
思った結果を得るためには answer
(リスト)とリスト化した square
した値を append
で結合する。
(define (square-list items) (define (iter things answer) (if (null? things) answer (iter (cdr things) (append answer (list (square (car things))))))) (iter items ())) (square-list (list 1 2 3 4)) gosh> (1 4 9 16)
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542