Я знаю, что они не сохраняются при сопоставлении с образцом (т. Е. Вам нужно переписать условие 'where' для каждого образца), но как работает определение границ для охранников?
например. Это работает?
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