Scheme 语法扩展与程序示例详解
1. 语法扩展基础
在 Scheme 编程中,语法扩展是一项强大的特性,它允许我们自定义语法形式,从而提高代码的表达力和可读性。下面将介绍几个重要的语法扩展示例。
1.1 lvhelp 实现
lvhelp 的实现较为复杂,它需要在创建任何绑定之前评估所有右侧表达式,并且要支持不规范的形式参数列表。以下是其代码:
(define-syntax lvhelp
(syntax-rules ()
((_ (x1 . fmls) (x ...) (t ...) e m b)
(lvhelp fmls (x ... x1) (t ... tmp) e m b))
((_ () (x ...) (t ...) e m b)
(call-with-values
(lambda () e)
(lambda (t ...)
(let-values m (let ((x t) ...) . b)))))
((_ xr (x ...) (t ...) e m b)
(call-with-values
(lambda () e)
(lambda (t ... . tmpr)
(let-values m (let ((x t) ... (xr tmpr)) . b)))))))
1.2 rec 语法扩展
rec 是一个
超级会员免费看
订阅专栏 解锁全文
3596

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



