値を手軽に分解する方法パターンマッチ
ある種のデータが従うべきパターンを指定できる。引数の構造で場合分けする。関数定義の際に、パターンマッチを使って、関数の本体を場合分けできる。これによって、読みやすいコードが書ける。
sayMe :: Int -> String sayMe 1 = 'One' sayMe 2 = 'Two' sayMe 3 = 'Three sayMe 4 = 'Four' sayMe x = "Not between 1 and 4"
再帰的に階乗を定義することもできる。
factorial :: Int -> Int factorial 0 = 1 factorial n = n * factorial (n-1)
リストのパターンマッチとリスト内包表記
リスト内包表記でのパターンマッチでは、失敗したら次の要素に進む。
Prelude>let xs = [(1,3),(4,3),(2,4),(5,3),(5,6),(3,1)] Prelude>[x*100+3 | (x, 3) <- xs] [103, 403, 503]