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