generated at
Pattern Matching




古いものでは1937年のSASLにすでにあった
分配束縛と呼ぶ言語もある
destructuring bind
Clojureとか

代数的データ型のコンパイラの検査
exhaustiveness
パターンに漏れがある場合はwarning
irredundancy
パターンに重複がある場合はwarning
上にあるものが優先される

いたる所のパターンマッチ
関数定義時
hs
eval (Add x y) = x + y
変数宣言時
hs
let (a, b, c) = (1, 2, 3)


パターンマッチの種類 ref 『n月刊ラムダノート Vol.1, No.3』 p.19
変数パターン
どんな値にでもマッチする
ワイルドカードパターン

タプルパターン
値の要素数違いは型検査器が行う
コンストラクタパターン





ネストした型のパターンも対応できる
ml
datatype stone = Black | White datatype cell = Empty | Full of stone fun isSequence s = case s of (Full Black, Full Black, Full Black) => true | (Full White, Full White, Full White) => true | other => false


の実装解説記事

の言語比較



Egisonとか

HaskellのPattern Matching case の糖衣構文




関連

参考
↑の紹介された文献
日本語
CoPL 7章