首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么符号拍..。表示方案宏模式中的零或多个表达式。

为什么符号拍..。表示方案宏模式中的零或多个表达式。
EN

Stack Overflow用户
提问于 2013-09-19 12:47:37
回答 1查看 82关注 0票数 2

当我阅读方案编程语言的宏部分时,它提到当您试图使用define-syntax定义语法扩展时,应该使用pat ...在模式中指定零或多个表达式。为什么不直接将...用于零或多个表达式,在这种情况下,pat ...意味着一个或多个表达式?

此外,当作者将and的定义定义如下:

代码语言:javascript
复制
(define-syntax and
  (syntax-rules ()
    [(_) #t]
    [(_ e) e]
    [(_ e1 e2 e3 ...)
     (if e1 (and e2 e3 ...) #f)]))

为什么不这样写:

代码语言:javascript
复制
(define-syntax and
  (syntax-rules ()
    [(_) #t]
    [(_ e) e]
    [(_ e1 e2 ...)
     (if e1 (and e2 ...) #f)]))

我已经用一些案例测试了这个定义,但我没有发现任何问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-19 13:01:34

按照R6RS...必须始终跟随某些标识符才能获得“0或更多”的含义(它的行为类似于克莱恩星),因此...pat ...的含义不同:就syntax-rules而言,前者只是一个文字...符号。

在您的示例中,这两种表单似乎都是相同的,但这是因为模式(_ e1 e2 ...)只在有两个或多个连词(and的参数)时才会触发,因为第二个模式(_ e)已经处理了只有一个结束符的情况。它并不总是这样工作,Dybvig显然发现写一个明确的“两个或多个”子句比“确切地一个”和“一个或多个”子句更干净。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18895016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档