問題2.38 – SICP(計算機プログラムの構造と解釈)その52
問題2.38 fold-right と fold-left 手続き (define (fold-right op initial sequence) (if (null? sequence) initial (op (car sequence) (fold-right op initial (cdr sequence))))) (define (fold-left op initial seque…続きを読む
問題2.38 fold-right と fold-left 手続き (define (fold-right op initial sequence) (if (null? sequence) initial (op (car sequence) (fold-right op initial (cdr sequence))))) (define (fold-left op initial seque…続きを読む
問題2.37 accumulate 手続きと accumulate-n 手続き (define (accumulate op initial sequence) (if (null? sequence) initial (op (car sequence) (accumulate op initial (cdr sequence))))) (define (accumulate-n op init…続きを読む
問題2.36 (define (accumulate-n op init seqs) (if (null? (car seqs)) () (cons (accumulate op init (map car seqs)) (accumulate-n op init (map cdr seqs))))) (define items (list (list 1 2 3) (list 4 5 6) (l…続きを読む
問題2.35 (map <??> <??>) 部分でリストの葉の数を数える。(葉の数を表す数のリストを返す) そのリストの各値を足す。 (define (count-leaves t) (accumulate + 0 (map (lambda (x) (cond ((null? x) 0) ((not (pair? x)) 1) (else (count-leaves x)…続きを読む
問題2.34 (define (accumulate op initial sequence) (if (null? sequence) initial (op (car sequence) (accumulate op initial (cdr sequence))))) (define (horner-eval x coefficient-sequence) (accumulate (lamb…続きを読む
問題2.33 アキュムレータ手続き (define (accumulate op initial sequence) (if (null? sequence) initial (op (car sequence) (accumulate op initial (cdr sequence))))) map の定義 (define (map p sequence) (accumulate (lambd…続きを読む
問題2.32 subsets が 引数s の全ての部分集合のリストを返すとすると、rest は s の先頭要素を除いた集合の全ての部分集合のリスト。 s の全ての部分集合のリストは、rest と rest の各要素に s の先頭要素を追加したものとの合成となる。 gauche での表示の為に print を使って表示している。 (define (subsets s) (if (null? s) (…続きを読む
問題2.30 直接(高階手続きを使わずに)再帰的に定義 (define (square-tree tree) (cond ((null? tree) ()) ((not (pair? tree)) (square tree)) (else (cons (square-tree (car tree)) (square-tree (cdr tree)))))) (define x (list 1 (l…続きを読む
問題2.29 (define (make-mobile left right) (list left right)) (define (make-branch length structure) (list length structure)) a. left-branch、right-branch、branch-length、branch-structure (define (left-bran…続きを読む
問題2.28 (define (fringe items) (cond ((null? items) ()) ((not (pair? items)) (list items)) (else (append (fringe (car items)) (fringe (cdr items)))))) (define x (list (list 1 2) (list 3 4))) ; ((1 2) (…続きを読む