Scheme 编程:语法、递归与延续性深入解析
1. 语法扩展与 and 、 or 运算符
在 Scheme 编程中,语法扩展是一项强大的特性,它允许我们自定义新的语法形式。以 and 和 or 运算符为例,正确的语法扩展对于程序的正确性至关重要。
当 x 不为零时,表达式本应返回 (/ 1 x) 的值。但使用错误版本的 and 时,表达式的展开过程如下:
(if (not (= x 0)) (and (/ 1 x)) #f)
(if (not (= x 0)) (if (/ 1 x) (and) #f) #f)
(if (not (= x 0)) (if (/ 1 x) #t #f) #f)
当 x 不为零时,最终结果为 #t ,而不是 (/ 1 x) 的值。
or 运算符的定义与 and 类似,但需要引入临时变量来处理中间值。以下是正确的 or 运算符定义:
(define-syntax or
(syntax-rules ()
((_) #f)
((_ e) e)
超级会员免费看
订阅专栏 解锁全文
33

被折叠的 条评论
为什么被折叠?



