Я хотел бы разделить два значения Int в Haskell и получить результат как Float. Я пробовал сделать это вот так:
foo :: Int -> Int -> Float
foo a b = fromRational $ a % b
но GHC (версия 6.12.1) говорит мне: "Не удалось сопоставить ожидаемый тип" Целое число "с введенным типом" Int "в отношении a в выражении.
Я понимаю, почему: для вызова fromRational требуется (%) для создания Ratio Integer, поэтому операнды должны быть типа Integer, а не Int. Но значения, которые я разделяю, нигде не приближаются к пределу диапазона Int, поэтому использование типа bignum произвольной точности кажется излишним.
Какой правильный способ сделать это? Должен ли я просто называть toInteger моими операндами или есть лучший подход (возможно, один из них не включает (%) и коэффициенты), о которых я не знаю?