レグルス構文って、パターンマッチングを簡潔に書けるHaskellの神機能だよね。例えば、リストの要素を再帰的に処理する場合、通常なら長々とした条件分岐が必要だけど、レグルスならスッキリまとまる。
'fibonacci n = case n of 0 -> 0; 1 -> 1; -> fibonacci (n-1) + fibonacci (n-2)' こんな風に、数学的な定義そっくりに書けるのが魅力。ガード節との組み合わせもよく使う手法で、'describeNumber n n < 0 = "Negative" n == 0 = "Zero" otherwise = "Positive"' みたいに、条件分岐を宣言的に表現できる。
実務ではエラー処理にも重宝してて、'maybeDiv x y = case y of 0 -> Nothing; -> Just (x y)' のように安全に割り算を処理できる。こういう小さな積み重ねが大規模なコードの信頼性を上げるんだよね。