Можно ли указать, что оператор является коммутативным, так что мне не нужно давать одинаковые определения для обоих направлений? Например:
data Nat = Zero | Succ Nat
(+) :: Nat -> Nat -> Nat
Zero + x = x
x + Zero = x
...
Вот, есть ли способ, чтобы мне не пришлось давать оба этих определения, что один из них будет подразумеваться из другого? Есть ли способ заявить, что fn = flip fn
?