如果我有一个功能,例如
f :: Int -> Int -> Int
f x y = x + y
我希望根据参数提供不同的功能,我使用模式匹配 我只找到了如何匹配具体值的语法,例如
f 0 y = y
是否有可能匹配更一般的东西?
我希望在第一个参数小于0的情况下具有不同的功能。第二种情况可能是第二个参数超过某个值。
答案 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