2013-11-27 93 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很有趣。

這個講座是由一些人似乎知道他在說什麼。他談到了這些概念,如何將問題分解成更小的部分,甚至展示了許多代碼示例。