gpt4 book ai didi

pattern-matching - 在 Racket 中进行模式匹配时的替代方案

转载 作者:行者123 更新时间:2023-12-04 02:23:28 30 4
gpt4 key购买 nike

我想在 Racket(以前称为 PLT Scheme)中匹配以下两个列表之一:

'(somename : (_ptr o sometype))

'(somename : (_ptr io sometype))

如您所见,唯一的区别是嵌入列表中的文字 'o 和 'io。

我可以看到执行此操作的两种基本方法。

或者:

(match myexpr 
[(list name ': (list '_ptr 'o _)) name]
[(list name ': (list '_ptr 'io _)) name]
[_ 0])

这看起来像是重复的工作,但非常清楚。或者:

(match myexpr 
[(list name ': (list '_ptr mode _))
(if (or (eq? mode 'o)
(eq? mode 'io))
name
0)]
[_ 0])

这避免了几乎重复的模式,但不太清楚。

我的问题是,有没有办法在 Racket 模式匹配中指定备选方案,类似于 {'o | 'io}?如果不是,上述两种方式中哪一种是最惯用的 Racket 方式?

最佳答案

使用模式(或'o 'io)。当然,不要忘记所有这些都是 documented .

关于pattern-matching - 在 Racket 中进行模式匹配时的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3085781/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com