SICP

SICP を読んでみる #58 第二章 pp.88-89

問題解答

問2.57

(define (augend s)
	(if (null? (cdddr s))
      (caddr s)
      (cons '+ (cddr s))))

(define (multiplicand p)
  (if (null? (cdddr p))
      (caddr p)
      (cons '* (cddr p))))

問 2.58
a:以下のような感じで構成子や選択子を定義していく

(define v (list 1 '+ 2))

(define (addend s) (car s))
(define (augend s) (caddr s))
(define (sum? x)
  (and (pair? x) (eq? (cadr x) '+)))

b:そのまま解くのは大変そう?一度前置記法に変換する処理を入れるのがいいかも。
→答えを見るとその通りっぽい。コンパイラを書いていた。

本文

2.3.3 例:集合の表現
集合の定義・演算について議論。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です