F#で要素数が2つ以上のリストをマッチさせる
前に書いたこの記事に関連して。
F#で要素数が1つのリストをマッチさせる
今度は要素数が2つ以上のリストにマッチさせる方法について。こちらも前回同様 Cons パターン ::
を使って次のように書ける。
match some_list with | _::_::_ -> printfn "two or more elements" | _ -> printfn "zero or one element"
_::_::_
は「先頭の要素、2番目の要素、残りの要素を含むリスト」の3つに分解可能なリストにマッチする。最後のリストは空のリストでも構わない。つまり要素数が2つ以上のリストにマッチするということになる。
実際に何がマッチしているかを出力した例がこちら。
let some_list = [1; 2] match some_list with | a::b::c -> printfn "%A, %A, %A" a b c | _ -> printfn "zero or one element"
実行結果
1, 2, []