Эта функция:
hola :: (Integral a) => a -> String
hola 1 = "OK"
hola _ = "asdf"
работает отлично. Но этот:
hola :: (Num a) => a -> String
hola 1 = "OK"
hola _ = "asdf"
не может быть скомпилирован: "Не удалось вывести (Eq a) из литерала` 1 '
Я действительно не понимаю. Я читаю учебник, где сказано
"Интеграл также является числовым классом типа. Num включает все числа, включая действительные числа и целые числа, Integral включает только целые (целые) числа. В этом классе типов есть Int и Integer." http://learnyouahaskell.com/types-and-typeclasses
Почему я не могу использовать Num?