scheme define-syntax body form

时间:2013-04-08 14:45:23

标签: scheme

(define-syntax let  
  (syntax-rules ()  
    [(_ ((x e) ...) b1 b2 ...)  
     ((lambda (x ...) b1 b2 ...) e ...)]))  
  

我们对let的定义中的单一规则应该是相当不言自明的,但有几点值得一提。首先,let的语法要求body包含至少一个表单;因此,我们指定了b1 b2 ...而不是b ...,这看起来更自然。

为什么使用(b1 b2 ......)在表格上表示?使用(b ...)更自然吗?

1 个答案:

答案 0 :(得分:4)

b ...允许零个或多个表达式,而对于b1 b2 ...b1必须是表达式,而b2 ...是零个或多个表达式。由于您不希望人们编写无体let,因此b1 b2 ...表单会强制执行至少一个正文表达。

你知道正则表达式吗?可以认为b ....*类似,而b1 b2 ...更像..*