2013-11-27 59 views
0

我知道模式匹配的要点,在运行时操纵数据结构。我知道模式匹配需要4个参数:匹配模式,匹配表达式,成功延续和失败延续。然而,之后,看着Racket文档,我迷路了。我不明白(具体的,逐行的,解释的例子)如何实现这个代码,以及如何处理它。有人可以向我解释模式匹配的一个简化版本,也许有一个基本的代码来帮助我?解释球拍中的图案匹配?

+3

您是否看过[图案匹配](http://www.cs.utah.edu/plt/snapshots/current/doc/guide/match.html)上的“球拍指南”条目?它有一些具体的例子。 –

回答

3

有了模式匹配,我们要撕开数据结构,所以我们通过在一块的数据进行破坏

(match foo 
    ...) 

接下来我们需要指定构造函数列表尝试foo反对。如果foo由其中一个构造函数构造,我们将foo的字段绑定到指定的变量并运行相关的块。

(match foo 
    [(list a b) (+ a b)] 
    [_   (displayln "Hey that's not a list!")]) 

就是这样!如果foo是两个元素的列表,我们运行+ a b,如果不是,我们运行另一个继续并打印foo不是列表。

3

听起来你可能有一个学校的任务来实现模式匹配引擎?

如果是这样,您可能会觉得看这个讲座4A: Pattern Matching and Rule-based Substitution很有趣。

这个讲座是由一些人似乎知道他在说什么。他谈到了这些概念,如何将问题分解成更小的部分,甚至展示了许多代码示例。