迎接,我是新来的,所以请照顾我。
6.1中的练习Simply Scheme的表达式为:
(cond (empty? 3)
(square 7)
(else 9))
我的头脑说它应该评估(方格7)并返回。 (空?3)被评估(返回原子 - 用其他原子和列表尝试它,同样的交易)。
我很困惑。
我所知道的:
我不知道的是:
我正在使用带有Slib的SCM以及随Simple Scheme(simple.scm,functions.scm,ttt.scm,match.scm,database.scm)提供的附加库。
空? simple.scm中的定义在这一点上超出了我的计划。
答案 0 :(得分:2)
cond
表格是这样的:
(cond (something-to-check-for-truthiness value-if-truthiness-succeed)
...other checks in the same format as above )
现在,如果您将代码放入此格式中,那么。
empty?
即只是函数empty(而不是它的调用)代替something-to-check-for-truthiness
而函数总是一个真值,因此返回3
之后的empty?
和value-if-truthiness-succeed
适合empty?
槽。因此,根本没有调用{{1}}函数。
答案 1 :(得分:1)
这不是cond所做的。 cond接受一个或多个参数,每个参数必须是scheme-expressions的列表。
(cond(#t))是一个有效的cond语句。
它评估第一个表达式,如果为true,则计算该列表中的其他s-epressions,并返回最后一个表达式的值。
(cond(#t 1 2 3 4(if(number?0)“是的,理智!”“它在皮肤上摩擦乳液”)))是一个有效的cond声明