Chat (Lingr.com)
Informaiton
Daily
Column
- MySQL日本語の旅(5/1)
- アクセス向上秘伝(5/9)
- 一風変ったHaskellλ門(6/13)
- SICP Answer Book (5/31) 問題3.26追加
Zope Solution
Extra
アーカイブ
OSS案内所
Site Info
関連リンク
##(link2sicp "book-Z-H-10.html#%_thm_1.5" "Exercise 1.5")
解答例
作用順序評価器では
(test 0 (p)) ==> (test 0 (p)) ;; 引数 0 を評価 ==> (test 0 (p)) ;; 引数 (p) を評価 ==> 無限ループ
正規順序では
(test 0 (p))
==> ((lambda (x y) (if (= x 0) 0 y)) 0 (p)) ;; testを評価
==> (if (= 0 0) 0 (p)) ;; 関数を適用
==> (if #t 0 (p)) ;; 条件節を評価
==> 0 ;; 条件節がtrueになったので
;; then節の 0 を値として返す
となる。この場合、正規順序の評価器が上の式で (p) を評価することはない。
コード
##(sicp-answer-code "ex-1.5.scm")