更一般的模式匹配

时间:2017-01-14 15:37:43

标签: haskell pattern-matching

如果我有一个功能,例如

f :: Int -> Int -> Int
f x y = x + y

我希望根据参数提供不同的功能,我使用模式匹配 我只找到了如何匹配具体值的语法,例如

f 0 y = y

是否有可能匹配更一般的东西?
我希望在第一个参数小于0的情况下具有不同的功能。第二种情况可能是第二个参数超过某个值。

2 个答案:

答案 0 :(得分:2)

你可以使用警卫:

f x y | x < 0 = ...
f x y | y > someValue = ...
f x y | otherwise = ...

答案 1 :(得分:2)

当然,有一种称为guards的机制:

f x y | x < 0 = y