floating: Add Roundable instance for Integral a => Ratio a.
[altfloat.git] / Data / Floating / Instances.hs
blob2c0cce85fc3fa7dbfdfb5eaa39b76454ac12a595
1 module Data.Floating.Instances where
3 import qualified Prelude
4 import Prelude hiding (round, floor, ceiling, truncate)
5 import Data.Floating.Classes
6 import Data.Ratio
8 instance Integral a => Roundable (Ratio a) where
9 toIntegral = Just . fst . properFraction
10 round x
11 | abs frac >= 1%2 = int%1 + signum frac
12 | otherwise = int%1
13 where (int, frac) = properFraction x