Я знаю, что они не сохраняются при совпадении с шаблоном (т. е. вам нужно переписать предложение «где» для каждого шаблона), но как работает область видимости для охранников?
напр. Это работает?
myFunction x1 x2
| x1 > x2 = addOne x1
| x1 < x2 = addOne x2
| otherwise = x1
where addOne = (1+)
Или это должно быть так?
myFunction x1 x2
| x1 > x2 = addOne x1
where addOne = (1+)
| x1 < x2 = addOne x2
where addOne = (1+)
| otherwise = x1