我知道模式匹配的要点,您可以在运行时操作数据结构。我知道模式匹配需要4个参数:匹配的模式,匹配的表达式,成功延续和失败延续。然而,在那之后,看看Racket文档,我迷失了。我不明白(具体,逐行,解释的例子)如何将其实现为代码,以及如何处理它。有人可以向我解释模式匹配的一个愚蠢版本,或许有一个基本代码来帮助我吗?
答案 0 :(得分:3)
通过模式匹配,我们希望拆分数据结构,因此我们传入一段数据来破坏
(match foo
...)
接下来,我们需要指定一个构造函数列表来尝试foo
。如果foo
由其中一个构造函数构造,我们将foo
个字段绑定到指定的变量并运行关联的块。
(match foo
[(list a b) (+ a b)]
[_ (displayln "Hey that's not a list!")])
就是这样!如果foo
是两个元素的列表,我们会运行+ a b
,如果没有,我们运行另一个延续并打印foo
不是列表。
答案 1 :(得分:3)
听起来好像你有一个学校作业来实现模式匹配引擎?
如果是这样,你可能会发现观看这个讲座很有意思4A: Pattern Matching and Rule-based Substitution。
讲座是由一些似乎知道他在说什么的人讲的。他谈到了概念,如何将问题分解成更小的部分,甚至展示了许多代码样本。