Я хотел бы разделить два значения 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
моими операндами или есть лучший подход (возможно, один из них не включает (%)
и коэффициенты), о которых я не знаю?