問題2.95 – SICP(計算機プログラムの構造と解釈)その104
問題2.95 多項式用の gcd-term 手続きにトレースのための記述を追加する。 (define (gcd-terms a b) (display (list ‘gcd-terms a b)) (newline) (if (empty-termlist? b) a (gcd-terms b (remainder-terms a b)))) 実行結果 (define p1 (make-polyn…続きを読む
問題2.95 多項式用の gcd-term 手続きにトレースのための記述を追加する。 (define (gcd-terms a b) (display (list ‘gcd-terms a b)) (newline) (if (empty-termlist? b) a (gcd-terms b (remainder-terms a b)))) 実行結果 (define p1 (make-polyn…続きを読む
問題2.94 多項式の算術演算パッケージに最大公約数を求める手続きを追加する。 (define (install-polynomial-package) … (define (gcd-terms a b) (if (empty-termlist? b) a (gcd-terms b (remainder-terms a b)))) (define (remainder-terms a b) (…続きを読む
問題2.93 汎用演算を使うように修正した有理数(rational)演算パッケージ。 (define (install-rational-package) (define (numer x) (car x)) (define (denom x) (cdr x)) (define (make-rat n d) (cons n d)) (define (add-rat x y) (make-rat (…続きを読む
問題2.92 多項式のデータオブジェクトを変数リスト(variable-list)と項リスト(term-list)によって構成する。 項リスト(term-list)は項(term)から成るリストで、各項(term)は次数リスト(order-list)と係数(coeff)によって構成される。 次数リスト(order-list)は変数リスト(variable-list)の順番で各変数の次数(order…続きを読む
問題2.90 今回は、 ex-2.90 | SICP | OSS-Web の写経。 数学関係は答えを見ることにする。 薄い(sparse)多項式の算術演算パッケージ (define (install-sparse-term-package) ;; 内部手続き (define (make-sparse-term order coeff) (list order coeff)) (define (th…続きを読む
問題2.89 濃い多項式に対応した多項式の算術演算。 (define (install-polynomial-package) ;; 内部手続き ;; 多項式型の表現 (define (make-poly variable term-list) (cons variable term-list)) (define (variable p) (car p)) (define (term-list p…続きを読む
問題2.88 符号を反転する手続きを各パッケージに追加する。 (define (negative x) (apply-generic ‘negative x)) ;;; 整数(integer)演算パッケージ (define (install-integer-package) … (put ‘negative ‘(integer) (lambda (x) (tag (- x)))) … ‘d…続きを読む
問題2.87 (define (install-polynomial-package) … (define (=zero-term? L) (or (empty-termlist? L) (and (=zero? (coeff (first-term L))) (=zero-term? (rest-terms L))))) (define (=polynomial-zero? p) (=zer…続きを読む
問題2.86 complex 型の drop は省いている。 integer, real 型の sin, cos, atan, square, sqrt を実装し、complex, rectangular, polar 型を変更する。 (define (sine x) (apply-generic ‘sine x)) (define (cosine x) (apply-generic ‘cosin…続きを読む
問題2.85 オブジェクトを塔に沿って下へ『押す』汎用演算 project の定義。 (define (install-project-package) (define (complex->real x) (make-real (real-part x))) (define (real->rational x) (make-rational (x->integer x) 1)) …続きを読む