“(?符号?名称)”是什么意思?

发布于 2024-10-27 09:04:32 字数 266 浏览 5 评论 0原文

我什至在为这个问题选择标题时都遇到了问题。请随意编辑。

我得到了这个方案代码,但不理解这个块。

(define (func b)
 (match b
   [(list (? symbol? x) rhs) ...

问题部分是(?符号?x)。我猜它是某种比较器,但我在任何地方都没有找到任何有关它的信息!很难搜索它,因为我不知道如何命名这个命令。

我想至少知道它的名字,感谢进一步的解释。 =)

谢谢!

I had problem even in choosing a title for this question. Please feel free to edit it.

I got this Scheme code and did not understand this block.

(define (func b)
 (match b
   [(list (? symbol? x) rhs) ...

The trouble part is (? symbol? x). I guess it's a comparator of some sort, but I didn't find anything about it anywhere! It's hard to search it, since I don't know how to name this command.

I would like to get at least its name, further explanations are appreciated. =)

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情绪失控 2024-11-03 09:04:32

刚刚找到了!

这是 (match ...) 语法的特定情况。在这里找到它:模式匹配

更具体:

(匹配 val-expr 子句...)

子句 = [pat expr ...+]
| [pat (=> id) expr ...+]

其中 pat 是

pat ::= id [匹配任何内容,绑定标识符]
(...)
| (? expr pat ...) [匹配 if (expr 值) 和 pat]

所以我有点对:它检查 x 是否是一个符号。

我很幸运!请完成本题!
非常感谢!

Just found it!

It's a specific case of (match ...) syntax. Found it here: Pattern Matching

More specific:

(match val-expr clause ...)

clause = [pat expr ...+]
| [pat (=> id) expr ...+]

Where pat is

pat ::= id [match anything, bind identifier]
(...)
| (? expr pat ...) [match if (expr value) and pat]

So I was kinda right: it's checking if x is a symbol.

I was lucky! Please complete this topic!
Many thanks!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文