首页

2009年5月14日星期四

Scheme/Lisp宏定义-Let


(define-syntax my-let
(syntax-rules ()
((_ ((n v)) e1 e2 ...)
(let ((n v)) e1 e2 ...))
((_ ((n1 v1) (n2 v2)) e1 e2 ...)
(let ((n1 v1))
(my-let ((n2 v2))
e1 e2 ...)))))
(my-let ((x 1) (y x))
(+ x y))
let* 函数的完全构造过程!

我们经常使用的let*就是以上代码?也就是它的原函数体的实现。

没有评论:

发表评论