F#の定数パターン
定数パターンを簡潔に言うと、指定された値にマッチする処理を行う事です。他言語の使用経験がある人は、switch文やSelect Case文を思い浮かべるとよいでしょう。
//数を覚えている途中の幼児
let childCount x =
match x with //定数パターンを行うmatch式
| 1 -> printfn "い~ち"
| 2 -> printfn "にぃー"
| 3 -> printfn "さぁ~~ん!"
| _ -> printfn "分からないよぉ";;
//いくつまで数を数えられるかな?
let a = childCount 1
let b = childCount 2
let c = childCount 3
let d = childCount 4;;
子供が一生懸命に数を覚えている様子をサンプルプログラムにしました。この子供は幼いので、まだ3までしか数えられません。このサンプルを見れば、定数パターンのイメージがつかめると思います。1~3の処理については問題がないと思います。最後の_(アンダーバー)は、ワイルドカードパターンです。ワイルドカードパターンは、任意の値にマッチします。このサンプルの様に、想定している値以外を表すのに使う場合が多いです。また、任意の値のみ処理をする場合、ワイルドカードパターンは必須です。試しにワイルドカードパターンを消して実行してみて下さい。警告25(FS0025)が表示されるはずです。
F#コンパイラは、match式で想定される全パターンが、指定されているのかチェックしてくれます。もし警告を無視して関数を無理やり束縛し、予想外の値を指定して実行すると、マッチが失敗してMicrosoft.FSharp.Core.MatchFailureExceptionがスローされます。基本的に警告を無視してはなりません。
参考資料:プログラミングF#