ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

ガード

ふつうのHaskellプログラミング p174

関数のパターンマッチの他に、条件も書けるということらしいです。

例えば、階乗を求めるプログラム。

main = print $ fact 5

fact :: Int -> Int
fact n = if n == 1 then 1 else n * fact (n-1)

結果は120(5 * 4 * 3 * 2 * 1)です。
これをガードを使って書くとこうなる。

main = print $ fact 5

fact :: Int -> Int
fact n
  | n == 1    = 1
  | otherwise = n * fact (n-1)

もちろん結果は120ですが、上の例より見た目がすっきりしているような気がします。
まあ、

main = print $ fact 5

fact :: Int -> Int
fact n = if n == 1 then
           1
         else
           n * fact (n-1)

みたいにすれば、見やすいけど。