1.手続きによる抽象の構築

問題1.3

ちょっと面白くなってきたw
普段はPHPしかさわらないので
条件式となるとifを使っちゃいますねー
condとかの方がきれいにかけるのかな?


(define (compare-sum x y z)
(if (> x y)
(+ (* x x)
(if (> y z)
(* y y)
(* z z)))
(+ (* y y)
(if (> x z)
(* x x)
(* z z ))))
)

問題1.4

実行を予想して実行しただけ

問題1.5

うーむ、、早速日本語がむずかしいw
これが噂の翻訳ですか、、
とりあえず保留にして他の方が説いたものを
参考にさせていただきましょう。。

追記

問題1.5こちらで解説が非常にわかりやすかったので参考にさせていただきました!
正規順序と作用的順序による評価


そもそも、「正規順序」「作用的順序」という言葉の意味が分かってませんでした。。
使っている処理系の評価がどういう順序で行われているかということらしい。。
(まぁそうやって書いてあるのですが、、)

  • 正規順序
    • 引数をそのままにして、式の手続きを展開する
      ifの評価から行うので0が返る
  • 作用的順序
    • 引数から評価をしていく
      今回の問題では(p)を評価してしまうので無限loopしてしまう

gaucheで実行すると無限loopになってしまいました。。

  • >作用的順序

正規順序の評価を試せる環境ないかなー?
ご存知の方コメントいただけるとうれしいです!