ガード
ふつうの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)
みたいにすれば、見やすいけど。