我正在阅读Simply Scheme,然后进入递归部分。
我不明白为什么当满足基本情况时,Scheme 返回递归过程的“构建”值,而不是导致基本情况评估为的实际参数值#t
。
例如,看一下递归过程的示例代码片段,该过程将单词作为输入,将其反转,然后将其吐出:
(define (reverse wd)
(if (empty? wd) wd
(word (last wd) (reverse (bl wd)))))
这让我感到困惑:(if (empty? wd) wd
我知道当形式参数的实际参数值为wd
空(或""
)时,基本情况的计算结果为#t
,导致第二个参数的值if
被计算。
我不if
明白的是( ,在这种情况下)的第二个参数如何wd
返回非空的东西,即使它看起来是触发基本情况的相同的、空的、正式的参数。
我错过了什么?
如果文档(或文本)中有某些内容可以解释这一点,我很乐意对其进行审查。