2010-02-24

問題1.1

  • 10
  • 12
  • 8
  • 3
  • 6
  • 実装依存
  • 実装依存
  • 19
  • nil
  • 4
  • 16
  • 6
  • 16

問題1.2

(/ (+ 5 4 (- 2 (- 3 (+ 6 (/ 4 5)))))
   (* 3 (- 6 2) (- 2 7)))

問題1.3

(defun f (x y z)
  (if (< x y)  
      (if (< x z)
          (+ (* y y) (* z z))
          (+ (* x x) (* y y)))
      (if (< y z)
          (+ (* x x) (* z z))
          (+ (* x x) (* y y)))))

問題1.4

bが正の場合、手続き+を引数aとbに作用させ、そうでない場合、手続き-を引数aとbに作用させる。

問題1.5

作用的順序で評価する解釈系の場合、testを作用させる前に引数の(p)が評価されるが、pの定義により評価が終了しない。

正規順序で評価する解釈系の場合、testが簡約され、その結果ifが評価されるが、ifの評価規則により0が評価され、結果は0になる。(p)は評価されない。

動機

積んでいたSICPを読むにあたって、練習問題の回答を記録しておきたかったのと、読んで思ったことを書き留めておきたかったので、ブログ形式で残しておこうという試み。Common Lisp勉強中につき、敢えてCommon Lispで。