私は単にスキームを調べていて、再帰のセクションにたどり着きました。
基本ケースが満たされたときに、Scheme が再帰プロシージャの「構築された」値を返し、基本ケースが に評価される原因となった実際の引数の値を返す理由がわかりません#t
。
たとえば、次のサンプル コード スニペットを見てください。これは、単語を入力として受け取り、それを逆にして、吐き出します。
(define (reverse wd)
(if (empty? wd) wd
(word (last wd) (reverse (bl wd)))))
これが私を混乱させるものです:(if (empty? wd) wd
仮パラメーターの実引数値wd
が空 (または""
) の場合、基本ケースが に評価され#t
、2 番目の引数の値if
が評価されることを理解しています。
私が理解していないif
のは、 ( wd
、この場合) の 2 番目の引数が、基本ケースをトリガーした同じ空の仮パラメーターのように見えても、空ではない何かを返す方法です。
私は何が欠けていますか?
これを説明するドキュメント (またはテキスト) に何かがあれば、喜んでレビューします。