SICPゼミ第52回
練習問題4.25
(define (factorial n) (unless (= n 1) (* n (factorial (- n 1))) 1))
適用順序言語では先に unless の引数がすべて評価される、すなわち (factorial 0) の評価が先に行われてしまうため、無限ループに陥って停止しない。 正規順序言語では引数が遅延評価されるため停止する。
練習問題 4.26
派生手続きにするのは,いい感じにif文に変形してやればいい.引数の順番変えるだけだし楽.
構文として定義してしまうと,手続きではないのでmapとかと組み合わせて使いたいときに困る.