В качестве примера рассмотрим тривиальную функцию
f :: (Integral b) => a -> b
f x = 3 :: Int
. GHC жалуется, что не может вывести (b ~ Int). Определение соответствует сигнатуре в том смысле, что возвращает что-то интегральное (а именно Int). Почему GHC должен / должен заставлять меня использовать более конкретную сигнатуру типа?
Спасибо