generated at
HaskellのPattern Matching



内部的にはcase式のみ
以下に示すものは全てcase式の糖衣構文



関数を複数回行うもの
hs
describeList' :: [a] -> String describeList' [] = "The list is empty." describeList' [x] = "The list has one element." describeList' _ = "The list has multiple elements."
データの構造を見て分岐する時に使う


guardを使ったもの
hs
describeListWithGuard :: [a] -> String describeListWithGuard xs | length xs == 0 = "The list is empty." | length xs == 1 = "The list has one element." | otherwise = "The list has multiple elements."
データの性質で分岐する時に使う
otherwise で網羅性をチェックする


if式を使ったもの
hs
isEmptyIf :: [a] -> Bool isEmptyIf xs = if null xs then True else False
条件分岐が少数の場合に使う



case..ofを使ったもの
hs
describeList :: [a] -> String describeList xs = case xs of [] -> "The list is empty." [x] -> "The list has one element." _ -> "The list has multiple elements."
これだけ -> を使うのが紛らわしいmrsekut








正格評価非正格評価が入り交じる
定義