2017-01-14 4 views
-2

Если у меня есть функция, напримерБолее общая схема сопоставления

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

, и я хочу иметь различную функциональность на основе параметров, я использую сопоставление с образцом.
Я нашел только синтаксис того, как сопоставлять конкретные значения, например.

f 0 y = y 

Можно ли совместить с чем-то более общим?
Я хотел бы иметь разную функциональность в том случае, если первый параметр меньше 0. Второй случай может быть, если второй параметр превышает определенное значение.

ответ

2

Вы можете использовать охранник:

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

Конечно, существует механизм, называемый guards для этого:

f x y | x < 0 = y