Полиморфная сигнатура для неполиморфной функции: почему бы и нет?

В качестве примера рассмотрим тривиальную функцию

f :: (Integral b) => a -> b
f x = 3 :: Int

. GHC жалуется, что не может вывести (b ~ Int). Определение соответствует сигнатуре в том смысле, что возвращает что-то интегральное (а именно Int). Почему GHC должен / должен заставлять меня использовать более конкретную сигнатуру типа?

Спасибо

6
задан dying_sphynx 29 February 2012 в 21:08
поделиться