问候,我是新来的所以请照顾我。
Simply Scheme中的练习6.1有如下表达式:
(cond (empty? 3)
(square 7)
(else 9))
我的想法是它应该评估(正方形 7)并返回它。(empty? 3) 被评估(返回原子 - 与其他原子和列表一起尝试,同样的处理)。
我很困惑。
我知道的:
- Scheme中所有不为假的都是真的。如果 3 为真且不为空 (#f),为什么 cond 表达式返回 (empty?3)?
- 对 cond 表达式的第一个参数进行求值,如果它为真,则返回 #t、定义的值或 #undefined 取决于上下文。如果为 false,它将继续连续评估 cond 参数,直到它这样做(或找不到合适的返回值)然后退出 cond。
我不知道的是:
- (空?3)自己返回#f。为什么 cond 在这里终止而不评估(正方形 7)?
- 为什么在 cond 中对 (empty?3) 的评估返回原子,而不是 #t 或 #f?
我正在使用带有 Slib 的 SCM 以及加载了简单方案(simply.scm、functions.scm、ttt.scm、match.scm、database.scm)提供的其他库。
空的?现在,simple.scm 中的定义超出了我的计划范围。