ワイルドカードパターンのメリット

今、暇な時間に少しずつ、F# for Scientistsを読んでいて
その中で、なるほど、思った部分があったので紹介してみる。

F#では任意のパターンにマッチするワイルドカードパターンというものがあるが、ワイルドカードを使わずにパターン部に変数をおいた場合にも、任意のパターンにマッチする動作をする。
具体的には次の例の通り。
これらはかけ算を行う関数の定義で、どちらも同じ動作をします。

//ワイルドカードパターン不使用
let product a b =
    match a,b with
        | a,0 -> 0
        | 0,b -> 0 
        | a,b -> a*b;;
//ワイルドカードパターン使用
let product2 a b =
    match a,b with
        | _,0 -> 0
        | 0,_ -> 0 
        | a,b -> a*b;;

しかし、下の例のワイルドカードパターンを用いたバージョンのほうが実際は良くて、ワイルドカードパターンを用いた場合、

○パターンマッチした値は使用されない

という点が明確になるとのこと。
また、場合は限られるが、このケースではワイルドカードパターンを用いた場合は、最初2つのパターンマッチをORパターンでかけるという点も有利です。
ほんとにちょっとしたことだけれども、コーディングスタイルの一例としていかがでしょうか。