ガード。

main = do print $ guardTest 1
          print $ guardTest (-1)
       
guardTest :: Int -> Int
guardTest x
    | x < 0 = 0
    | otherwise = x

結果。

1
0
から=までガード(guard)

ガードはパターンマッチと同様に仮引数の値によって複数の関数を定義できる。
パターンマッチはこれだけしか検査できないが、ガード(guard)は任意のBool型の式で値を検査することができる。