Компилятор Haskell генерирует ошибку для следующей функции:
balancedMax :: Int -> Int -> Int
balancedMax -1 _ = -1
balancedMax _ -1 = -1
balancedMax a b = max a b
Перевертывание знака решает проблему:
balancedMax :: Int -> Int -> Int
balancedMax 1 _ = -1
balancedMax _ 1 = -1
balancedMax a b = max a b
Почему сопоставление шаблонов происходит с отрицанием, и что такое обходное решение?