altfloat-0.2: Data/Floating/Instances.hs
{-
- Copyright (C) 2009 Nick Bowler.
-
- License BSD2: 2-clause BSD license. See LICENSE for full terms.
- This is free software: you are free to change and redistribute it.
- There is NO WARRANTY, to the extent permitted by law.
-}
module Data.Floating.Instances where
import qualified Prelude
import Prelude hiding (round, floor, ceiling, truncate)
import Data.Floating.Classes
import Data.Ratio
instance Integral a => Roundable (Ratio a) where
toIntegral = Just . fst . properFraction
round x
| abs frac >= 1%2 = int%1 + signum frac
| otherwise = int%1
where (int, frac) = properFraction x