Я прохожу через учебник по haskell (узнаю, что вы haskell для отличного хорошего), и я играл с этим кодом, который я написал, основываясь на одной из функций в книге.
reverseNum :: (Num a) => a -> a
reverseNum 123 = 321
reverseNum x = 0
и ghci говорит мне, что он не может вывести (Eq a) из (Num a).
Итак, я меняю первую строку на эту
reverseNum :: (Integral a) => a -> a
и это сработало. Это было странно, потому что я считал, что я являюсь частью класса Num, который вам нужен, чтобы быть отдельно от Eq.
Я попробовал еще одну вещь, чтобы удовлетворить меня любопытством и изменил первые 2 строки на этот
reverseNum :: (Floating a) => a -> a
reverseNum 1.0 = 0.1
и это дало мне ту же ошибку.
Я знаю, что вы можете исправить это, сделав что-то вроде reverseNum :: (Num a, Eq a) ...
, но я хочу знать, почему Integral является единственным, где Eq может быть выведено.
Почему это?
P.S. Я действительно новичок в haskell, поэтому... будьте осторожны:)