1.2
1.2.1
- recursive process
- recursive procedure
この二つは全然違う.recursive procedureはprocedureが自信を呼び出している構文の表現.recursive processは,プロセスが進行の仕方であって構文上の話ではない.
(define (factorial n) (fact-iter 1 1 n)) (define (fact-iter product counter max-count) (if (> counter max-count) product (fact-iter (* counter product) (+ counter 1) max-count)))
この階乗の計算方法はrecursive procedureにより実装されているが,recursive processではなくiterative processである.こうなるのは末尾再帰のおかげ.末尾再帰でスタックレス*1にループが記述できるから,whileなどのループはシンタクスシュガーでしかない.
演習問題
1.10を(A 2 6)とかやってout of memoryでEmacsがメモもろとも死亡したから掲載は割愛
アッカーマンやべえええ
*1:こんな言葉あるんかしらん