参考 The F# 4.1 spec 7 Patterns パターンマッチ部分の構文。一部コメント部を和訳 rule := pat pattern-guardopt -> expr -- pattern, optional guard and action pattern-guard := when expr pat := const -- 定数パターン long-ident pat-paramopt patopt -- named pattern _ -- ワイルドカードパターン pat as ident -- as パターン pat '|' pat -- disjunctiveパターン pat '&' pat -- conjunctiveパターン pat :: pat -- consパターン pat : type -- pattern with type constraint pat,...,pat -- タプルパターン (pat) -- parenthesized pattern list-pat -- リストパターン array-pat -- 配列パターン record-pat -- レコードパターン :? atomic-type -- dynamic type test pattern :? atomic-type as ident -- dynamic type test pattern null -- null-test pattern attributes pat -- pattern with attributes list-pat := [ ] [ pat ; ... ; pat ] array-pat := [| |] [| pat ; ... ; pat |] record-pat := { field-pat ; ... ; field-pat } field-pat := long-ident = pat pat-param := | const | long-ident | [ pat-param ; ... ; pat-param ] | ( pat-param, ..., pat-param ) | long-ident pat-param | pat-param : type | <@ expr @> | <@@ expr @@> | null pats := pat , ... , pat field-pats := field-pat ; ... ; field-pat rules := '|'opt rule '|' ... '|' rule