У меня есть тип данных Многочлен r для многочленов в Haskell и экземпляр Ring для него. ( класс Ring r, где plus :: r -> r -> r; times :: r -> r -> r; отрицательный :: r -> r; zero :: r; one :: r
- это просто упрощенная версия Num).
Теперь я мог бы определить многочлен, например gauss = x ^ 2 + 1
или eisenstein = x ^ 2 + x + 1
, а затем работать в " и если их два, они должны быть одинаковыми.)
Есть ли какой-нибудь безопасный по типу (я имею в виду не использование небезопасных функций) способ запрограммировать это в haskell? Я довольно озадачен. Спасибо!