Ответ 1
Сложные числа, например, могут быть добавлены, вычтены, умножены и проверены на равенство, но не упорядочены. См. Complex a
из базы данных Data.Complex.
Я знаю, что для типа, имеющего экземпляр класса Num
, должен быть один из Eq
и Show
class (Eq a, Show a) => Num a
Мне интересно, почему это должно быть Eq
, а не Ord
. Имеет ли смысл, чтобы числовой тип находился в Eq
, но не в Ord
?
Сложные числа, например, могут быть добавлены, вычтены, умножены и проверены на равенство, но не упорядочены. См. Complex a
из базы данных Data.Complex.
Обратите внимание, что ограничения Eq
и Show
также широко считались ошибочными. Например, они предотвращают вполне достоверные экземпляры Num
для вещей, содержащих функции. В последней версии GHC эти ограничения также удаляются, оставляя Num
без ограничений по суперклассам.