『Introduction to Functional Programming using Haskell』届きました。
この本は、Mirandaで書かれていた『関数プログラミング』のHaskell版です。
1章 Fundamental concepts、1.5 Definitionsのあたりからメモ。
条件式の代わりにガード式を使用する利点は、3つ以上の節(clause)が定義される場合です。
たとえば、整数の引数xをとり、xが負の場合に-1、0の場合に0、正の場合に1を返すsignum関数を考えてみましょう。
ガード式を使用した場合は以下のように書きます:
signum :: Integer -> Integer signum x | x < 0 = -1 | x == 0 = 0 | x > 0 = 1
条件式の場合は以下のように書きます:
signum :: Integer -> Integer signum x = if x < 0 then -1 else if x == 0 then 0 else 1
3つの条件が明示的になるので、ガード式を使用した定義の方が簡潔です。