私は約 8 か月前に The perils of Java Schoolsを読み、それ以来、すぐに学ぶべきことのチェックリストとして使用しています。私は彼が話していることのほとんどを理解しています。
ただし、よくわからない部分があります。
純粋に機能的なプログラムでは、変数の値は決して変化しませんが、常に変化します! パラドックス!
このことから私が得ているのは (私が間違っていたら許してください)、彼は再帰について話しているということですが、再帰は
概念が単純すぎるように思えます。これが私の考えです:
(define (tail-rec n)
(if (= n 1)
(display "Done!")
(begin
(display n)
(newline)
(tail-rec (- n 1)))))
出力されているものを見るとn
、末尾再帰関数の の値はまだ変化していませんが、実際に変化していることがわかります。tail-rec
また、関数自体は
変数の状態を変更していないため、純粋に関数であることを意味します。
すぅ…
これでいいのか?
これはジョエルが話していたことですか?そうでない場合は、私を修正してください。