module BishBosh.Property.ShowFloat(
ShowFloat(..),
showsFloatToN',
showsFloatToN
) where
import qualified BishBosh.Type.Count as Type.Count
import qualified Data.Ratio
import qualified Numeric
showsFloatToN' :: RealFloat a => Type.Count.NDecimalDigits -> a -> ShowS
showsFloatToN' :: NDecimalDigits -> a -> ShowS
showsFloatToN' NDecimalDigits
nDecimalDigits = Maybe NDecimalDigits -> a -> ShowS
forall a. RealFloat a => Maybe NDecimalDigits -> a -> ShowS
Numeric.showFFloat (NDecimalDigits -> Maybe NDecimalDigits
forall a. a -> Maybe a
Just (NDecimalDigits -> Maybe NDecimalDigits)
-> NDecimalDigits -> Maybe NDecimalDigits
forall a b. (a -> b) -> a -> b
$ NDecimalDigits -> NDecimalDigits
forall a b. (Integral a, Num b) => a -> b
fromIntegral NDecimalDigits
nDecimalDigits)
class ShowFloat a where
showsFloat :: (Double -> ShowS) -> a -> ShowS
instance ShowFloat Double where
showsFloat :: (Double -> ShowS) -> Double -> ShowS
showsFloat = (Double -> ShowS) -> Double -> ShowS
forall a. a -> a
id
instance ShowFloat Float where
showsFloat :: (Double -> ShowS) -> Float -> ShowS
showsFloat Double -> ShowS
fromDouble = Double -> ShowS
fromDouble (Double -> ShowS) -> (Float -> Double) -> Float -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Float -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac
instance Integral r => ShowFloat (Data.Ratio.Ratio r) where
showsFloat :: (Double -> ShowS) -> Ratio r -> ShowS
showsFloat Double -> ShowS
fromDouble = Double -> ShowS
fromDouble (Double -> ShowS) -> (Ratio r -> Double) -> Ratio r -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ratio r -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac
showsFloatToN :: ShowFloat a => Type.Count.NDecimalDigits -> a -> ShowS
showsFloatToN :: NDecimalDigits -> a -> ShowS
showsFloatToN NDecimalDigits
nDecimalDigits = (Double -> ShowS) -> a -> ShowS
forall a. ShowFloat a => (Double -> ShowS) -> a -> ShowS
showsFloat ((Double -> ShowS) -> a -> ShowS)
-> (Double -> ShowS) -> a -> ShowS
forall a b. (a -> b) -> a -> b
$ NDecimalDigits -> Double -> ShowS
forall a. RealFloat a => NDecimalDigits -> a -> ShowS
showsFloatToN' NDecimalDigits
nDecimalDigits